应元同学说要系统介绍一下THD类。我表示这个类太大,如果只是将字段意义依次列出意义不大,最好是碰到问题将相关的字段再说明,能关联更多信息。最近的一个patch中刚好碰到user_connect(好吧,是误用), 就介绍一下。
1、 字段说明
THD::user_connect字段是USER_CONN类型,声明在sql/structs.h. 其作用是记录当前连接用户的信息。结构如下:
typedef struct user_conn {
char *user;
char *host;
ulonglong reset_utime;
uint connections;
uint conn_per_hour, updates, questions;
USER_RESOURCES user_resources;
} USER_CONN;
可以看到,其中保存了用户名、客户端host信息,还有本用户的更新数、连接数等。
与之配套的,是一个hash结构hash_user_connections,hash_key中包含user和host。因此相同user &host的连接共享同一个USER_CONN.
2、数据源
conn_per_hour, updates, questions是当前连接对应的用户的实时统计信息。user_resources为元数据,来源于表mysql.user.
如:在localhost用root账户登录,update mysql.user set max_updates =2 where user=’root’; flush privileges; (必须flush后才生效)。则此账号最多只能执行2个更新操作(不局限于update)。
3、相关问题
a) hash_user_connections为内存结构,因此统计信息重启后并不保存;
b) 如果达到某个统计值达到上限,比如更新数,如何清空?
实际上并没有提供单独清空某个统计值的接口。但在执行 flush privileges和flush user_resources时,会将所有的统计值清空。对应被调用的函数为 reset_mqh (sql/sql_connect.cc).
/* for FLUSH PRIVILEGES and FLUSH USER_RESOURCES */
for (uint idx=0;idx < hash_user_connections.records; idx++)
{
USER_CONN *uc=(struct user_conn *) hash_element(&hash_user_connections,
idx);
if (get_them)
get_mqh(uc->user,uc->host,uc);
uc->questions=0;
uc->updates=0;
uc->conn_per_hour=0;
}
c) 是否所有的连接都会设置user_connect?
实际上,由于mysql.user里面的最后四个字段往往是被设置为默认的0。是否设置user_connect就取决于配置参数max_user_connections。 若为0,则该server的所有连接,都不设置user_connect.。估计是MySQL考虑到所有这些值都为0,不需要记录统计信息。实现策略的代码为
if ((ur.questions || ur.updates || ur.conn_per_hour || ur.user_conn ||
max_user_connections) &&
get_or_create_user_conn(thd,
(opt_old_style_user_limits ? thd->main_security_ctx.user :
thd->main_security_ctx.priv_user),
(opt_old_style_user_limits ? thd->main_security_ctx.host_or_ip :
thd->main_security_ctx.priv_host),
&ur))
{
/* The error is set by get_or_create_user_conn(). */
DBUG_RETURN(1);
}
可以看到,如果前面列出的所有值都为0,则不执行函数get_or_create_user_conn。
thd->ser_connect实例在此函数中创建。
分享到:
相关推荐
可计算任意波形THD的小工具,非常方便;修改其输入波形即可得出结果
MATLAB下FFT变换实用2个例子,可以进行绘制fft波形及计算THD
基于pscad的求取三相电压不平衡度的仿真模型,倾情奉献。
THD Reduction in Non-linear Loads
该vi 可对输入波形进行谐波成分分析 ,获取2-20次谐波成分,可测量直流分量、基波幅值、基波频率等参数,并具有THD越线警告功能
单相逆变器仿真,MATLABR2016B工程文件,THD小于1%,电压电流双闭环控制,并且加入了负载扰动,控制效果良好
SVPWM的实现,调试通过.对输入波形的跟踪非常精确,THD小于0.2 .本来作为APF中替代滞环比较用的.
利用Wiener滤波器和Kalman滤波器通过测量信号估计 的波形,用Matlab对此问题进行仿真,写出仿真报告,
是关于电力电子电路分析的,用得上的可以
hash函数 用于签名算法的实现等等 用于加解秘
可用于测量ADC的信噪比SNR,信纳比SINAD,无杂散动态范围SFDR,总谐波失真THD,得到频谱图及时域图的MATLAB作图,ADC测试方法是fft法
This is matlab simulink svpwm model just copy and paste it in work and simulate.this is powerful modulation technique to reduce harmonics.the THD compared to other modulation techniques is also low ....
由ADC的数字输出计算SFDR,THD,可以计算ENOB,并找出各次谐波
win32api程序,读取256级灰度图并显示其文件头信息,彻底了解位图文件头结构,
Calculation of THD using DSTATCOM
Linux 线程池 实现套接字编程,减少线程创建开销
GSM Security and the protocols involves in a mobile environme
Linux中的一个简单线程池,基于POSIX线程API。 管理线程将检索不必要的空闲线程以保持低资源消耗。
IMPEDANCE SOURCE INVERTER FEEDING RL LOAD WITH CONSIDERABLE THD AND WITHOUT FILTER
简单的频谱分析后计算谐波 1024点 频率未做插值法存在一定误差,使用片上ADC-DAC模拟正弦波。三角波、方波的THD计算 需要根据程序的协议配合上位机串口使用 注释掉相关部分轮询THD计算