`
丁林.tb
  • 浏览: 797244 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL核心类THD介绍之user_connect

阅读更多

应元同学说要系统介绍一下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_connectionshash_key中包含userhost。因此相同user &host的连接共享同一个USER_CONN.

 

2、数据源

conn_per_hour, updates, questions是当前连接对应的用户的实时统计信息。user_resources为元数据,来源于表mysql.user.

如:在localhostroot账户登录,update mysql.user set max_updates =2 where user=’root’; flush privileges; (必须flush后才生效)。则此账号最多只能执行2个更新操作(不局限于update)。

 

3、相关问题

         a) hash_user_connections为内存结构,因此统计信息重启后并不保存;

       b) 如果达到某个统计值达到上限,比如更新数,如何清空?

          实际上并没有提供单独清空某个统计值的接口。但在执行 flush privilegesflush 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实例在此函数中创建。

4
6
分享到:
评论
5 楼 hot66hot 2013-03-19  
这个必须定, 好东西.
4 楼 GaoYusong 2013-03-13  
在google上搜索THD时看到,顶下!
3 楼 Technoboy 2011-05-23  
习惯吧,
丁林.tb 写道

这篇踩的人这么多,

我表示鸭梨很大啊

能不能别光踩,说一下原因好改进,善了个哉的

习惯吧,有些人根本不看,直接踩,不是技术爱好者,又何必和他们一般见识呢!
2 楼 gurudk 2011-02-28  
可惜我只能顶1个,写的挺好的。
1 楼 丁林.tb 2011-01-26  

这篇踩的人这么多,

我表示鸭梨很大啊

能不能别光踩,说一下原因好改进,善了个哉的

相关推荐

    FFT-Matlab.rar_FFT matlab THD_THD计算_matlab计算THD_thd计算matlab_波形TH

    标题中的"FFT-Matlab.rar_FFT matlab THD_THD计算_matlab计算THD_thd计算matlab_波形THD"表明这是一个关于在MATLAB环境下使用快速傅里叶变换(FFT)进行总谐波失真(THD)计算的教程资源。这个压缩包包含一个名为"FFT-...

    THD.rar_THD matlab_THD 算法_matlab 计算thd_matlab算THD_计算THD的软件

    THD(Total Harmonic Distortion,总谐波失真)是衡量信号质量的重要指标,尤其在音频、电力系统和通信领域。它表示了信号中谐波分量与基波分量的比例,数值越小,表明信号失真越小,质量越高。在MATLAB中计算THD,...

    THD.rar_pscad THD_pscad仿真_三相平衡_不平衡度_电压不平衡度

    基于pscad的求取三相电压不平衡度的仿真模型,倾情奉献。

    3-THD reduction_harmonics_filter_

    标题中的“3-THD reduction_harmonics_filter_”暗示了本次讨论的主题是关于降低总谐波失真(THD)以及与之相关的谐波滤波技术。THD是衡量非线性负载中电流或电压波形畸变程度的重要指标,通常在电力系统、电子设备...

    谐波检测模块.zip_labview_thd_thd谐波检测_基波幅值_谐波分析

    "谐波检测模块.zip_labview_thd_thd谐波检测_基波幅值_谐波分析" 这个标题表明这是一个与LabVIEW相关的项目,它包含一个谐波检测模块,用于分析输入信号中的谐波成分。THD(总谐波失真)是谐波分析中的一个重要指标...

    Current_zhihuan.zip_current THD_scenem63_单相逆变器_负载扰动 仿真_逆变 双闭环

    本文将以“Current_zhihuan.zip_current THD_scenem63_单相逆变器_负载扰动 仿真_逆变 双闭环”为研究对象,探讨单相逆变器的THD(总谐波失真)控制、双闭环策略以及负载扰动应对方法。 首先,THD是衡量逆变器输出...

    thd.rar_finallyqtt_thd_进程与线程

    在标题"thd.rar_finallyqtt_thd_进程与线程"中,"thd"可能指的是线程(Thread)的缩写,而"finallyqtt"可能是某个项目或工具的标识。本文将深入探讨进程与线程的基础知识,以及如何在Matlab环境中应用Wiener滤波器和...

    THD.rar_thd_电力电子

    THD是指非线性负载引入的谐波电流与基波电流之比的平方根,通常以百分比表示。在理想情况下,交流电源波形应该是纯正弦波,但实际应用中,由于各种非线性设备的存在,如开关电源、UPS、电动车充电器等,会导致电流或...

    Thd.rar_byszn_course1n9_thd_按钮控件

    标题中的“Thd.rar_byszn_course1n9_thd_按钮控件”可能是指一个关于编程课程的压缩包文件,由用户“byszn”创建,可能是课程编号为“course1n9”的一部分,主要讲解了“thd”(可能是线程或特定技术的缩写)以及...

    thd_pool_v1.01.tar.gz_THDPOOL

    《Linux线程池实现与套接字编程:深入解析thd_pool_v1.01》 在计算机系统中,线程池是一种管理线程资源的有效方式,它通过预先创建一组可重用线程来减少线程创建和销毁的开销。在标题为“thd_pool_v1.01.tar.gz_...

    HysteresisSVPWM03.rar_APF THD_SVPWM的APF_THD by matlab _matlab sv

    SVPWM的实现,调试通过.对输入波形的跟踪非常精确,THD小于0.2 .本来作为APF中替代滞环比较用的.

    ADCdongtai.rar_ADC信噪比测量_FFT THD_MATLAB ADC SFDR_discoverycrz_总谐波

    标题中的"ADCdongtai.rar_ADC信噪比测量_FFT THD_MATLAB ADC SFDR_discoverycrz_总谐波"表明这是一个关于模拟数字转换器(ADC)性能测量的MATLAB程序,主要涉及信噪比(SNR),信纳比(SINAD),无杂散动态范围(SFDR)和总...

    thd.rar_noddedxco_was1m6_系统/网络安全

    标题中的"thd.rar_noddedxco_was1m6_系统/网络安全"暗示这是一个与系统安全相关的项目,其中可能包含了一些防止或检测恶意代码的技术。"noddedxco"和"was1m6"可能是特定的代码名称或版本标识,它们在网络安全领域...

    thd_pool_v1.02.tar.bz2.zip_linux_linux 线程池_whale1ce_线程池

    "thd_pool_v1.02.tar.bz2.zip_linux_linux线程池_whale1ce_线程池"这个压缩包包含了一个由用户whale1ce编写的线程池实现,版本为v1.02。 线程池的基本思想是预先创建一组线程,而不是每当需要执行任务时就创建一个...

    svpwm.rar_THD+inverter_inverter two level_level inverter_simulin

    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 ....

    SFDR_HD.rar_ADC enob_MATLAB ADC SFDR_THD计算_matlab计算enob_谐波计算

    由ADC的数字输出计算SFDR,THD,可以计算ENOB,并找出各次谐波

    5_matalb_thd_

    标题 "5_matalb_thd_" 暗示我们正在探讨使用 MATLAB 计算总谐波畸变率(THD)的主题,特别是在分布式静态补偿器(DSTATCOM)的应用上下文中。DSTATCOM 是一种电力电子设备,用于改善电网质量,特别是通过减少谐波...

    FW__THD_驱动

    标题中的“FW__THD_驱动”指的是一个特定的键盘驱动程序,可能是一个专为山寨笔记本设计的硬件驱动。在计算机领域,驱动程序是操作系统与硬件设备之间沟通的桥梁,它使得操作系统能够识别并控制硬件设备,发挥其应有...

    matlab 仅考虑整数倍的谐波THD计算代码

    - `jisuan_THD_example.m`可能是示例代码或测试函数,用于演示如何使用`jisuan_THD.m`函数,它可能包含一个模拟信号或者实际测量数据的实例,以便用户了解如何运行和验证谐波计算的正确性。 在MATLAB中进行谐波...

    ZSI_without_filter.zip_thd_zsi

    标题中的"ZSI_without_filter.zip_thd_zsi"暗示了我们正在讨论的是一种不带滤波器的阻抗源逆变器(ZSI)系统,其中THD代表总谐波失真(Total Harmonic Distortion),ZSI是阻抗源逆变器(Impedance Source Inverter...

Global site tag (gtag.js) - Google Analytics