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_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实例在此函数中创建。

[前沿技术] AMD FSR 1.0源码解析:EASU算法实现细节与优化策略 本文深入解析了AMD FSR 1.0技术的核心——EASU(边缘自适应空间升频)算法。通过剖析其源码,详细阐述了EASU如何利用12-tap采样窗口、基于Lanczos滤波器的多项式近似以及自适应的边缘检测机制,在无需AI模型的情况下实现高质量图像放大。文章重点揭示了其极致的GPU优化策略,包括寄存器利用、采样优化和避免动态分支,为理解高性能图形算法提供了绝佳范例。 阅读详情

相关推荐

ADS2020实战:手把手教你搭建交叉耦合VCO并分析相位噪声(附避坑指南)

本文以ADS2020软件为例,提供了交叉耦合压控振荡器(VCO)从原理图搭建到相位噪声分析的完整实战指南。详细讲解了核心器件选择、谐波平衡与瞬态仿真的关键设置,并重点剖析了相位噪声的仿真方法与优化方向。文中附有详细的避坑指南,帮助初学者和工程师高效完成VCO设计与仿真验证,避免常见错误。

p5l2m9n4o6q的博客 283

mysql源码分析——THD数据结构

一、什么是THD 是非常非常不想说这个数据结构的,按照设计原则和设计思想,这个类就是个让人无语的。可存在,就有它的道理,绕是绕不过去的。先看一下它的继承结构: 这个类在前面提到过,它是对线程描述的一个数据结构。MySql里用到线程的地方不少,那么理所当然的这个THD类用到的地方也不少。在前面分析网络操作的时候儿就看到这个类的身影,讲真,是不想分析这个类的,不是说这个类多难,是这个类承载的东西太多。本身线程自己的定义就承载了很多相关的信息,再在此基础上进行抽象封装的THD类,一定是更多,但是不分析,又绕不过

fpcc的专栏 3373

PTA编程—币值转换

我对于这个题的主要思想就是把九位数分三块,对每块进行处理后,再合并。有了这个思想就开始写代码,后面就是哪有洞补哪,哪个测试用例没通过就对其特殊处理…。反正最后测试用例全通过了。 #include<iostream> #include <string> #include <algorithm> using namespace std; char a[10]={'a','b','c','d','e','f','g','h','i','j'}; //既然题目说了最多9位

uyo9ko的博客 991

mysql源代码解析经典类——THD类

1.1 线程类THD概述 对于每个客户端连接,我们使用THD作为线程/连接描述符创建一个单独的线程。 1.2 位置 #include <sql_class.h> 嵌套类 //表示只读可连接事务的类,封装了有关如何备份当前事务的状态,如何在SE中启动只读可连接事务,将其完成,然后将其恢复为原始状态的知识。 class Attachable_trx //从THD :: Attachable_trx类派生的类允许在可附加事务中进行更新。 class Attachable_trx_rw //E

青阳的博客 2127

HAL库硬件SPI驱动ST7735 TFT屏幕:从零实现高效刷屏与图形绘制

本文详细介绍了如何使用STM32的HAL库硬件SPI驱动ST7735 TFT屏幕,从硬件连接到SPI配置优化,再到图形绘制与文本显示的实现。重点分享了DMA传输、局部刷新等高级优化技巧,显著提升刷屏效率,帮助开发者快速掌握屏幕驱动技术并应用于实际项目。

pink的博客 741

AI图像识别在临电配电箱安全检测中的应用与实践

计算机视觉与AI图像识别技术正逐步改变传统工业检测方式。通过深度学习模型如YOLOv5和ResNet,系统能自动识别设备元件并分析其状态,大幅提升检测效率和准确性。这种技术特别适用于需要严格遵循行业标准的场景,如临电配电箱的安全检测。将《施工现场临时用电安全技术规范》等条文转化为可量化的算法,AI系统能自动检查PE线连接、漏保功能等关键项目。实际应用表明,此类解决方案可使电气事故率下降90%以上,同时检测耗时缩短80%,为工地安全提供了智能化保障。

weixin_29042035的博客 330

MySQL核心类-THD-生命周期

文章目录MySQL核心类-THD-生命周期初始化过程THD销毁 MySQL核心类-THD-生命周期 THD是MySQL server层最核心的类,没有之一,基本上所有的信息都是和THD 实例进行绑定的。对于每一个客户端链接进来后,系统会实例化一个THD对象,而后这个对象伴随这个链接的一生。 初始化过程 mysqld启动完毕后,main线程负责监听数据库对外服务端口,在循环中接受外部链接请求 代码如...

sunashe的个人随笔 3200

固定资产报废的损失鉴定怎么做?

在社会生产的日常中,企业经常会遇到固定资产报废的损失鉴定,那么怎么去做鉴定?哪些情况下能申请固定资产报废损失鉴定呢? 今天,华碧鉴定就和大家说一说固定资产报废损失鉴定那些事儿。 符合下列条件之一的固定资产可申请报废: 1、使用年限过长,功能丧失,完全失去使用价值,或不能使用并无修复价值的; 2、产品技术落后,质量差,耗能高,效率低,已属淘汰且不适于继续使用,或技术指标已达不到使用要求的; 3、严重损坏,无法修复的或虽能修复,但累计修理费已接近或超过市场价值的; 4、主要附件损坏,无.

weixin_50362670的博客 2117

mysql thd_MySQL源码阅读3-THD对象

这里用单独的一篇介绍THD对象,目前看来THD对象是线程处理用户语句请求的核心类。然而该类实在是太大了,单单类的定义就差不多有了3500行。因此,这里不能够完全理解透,所以介绍得也不会全。望谅解~1. 简单说明THD没有查找到具体是什么的缩写,具体的代码定义是在mysql-server-8.0/sql/sql_class.h中,官方代码说明文档是在下面链接中。https://dev.mysql.c...

weixin_39984963的博客 388

Halcon图片拼接避坑指南:特征点匹配常见问题与解决方案

本文深入解析Halcon图片拼接中特征点匹配的常见问题与解决方案,涵盖特征点提取、匹配优化及变换模型选择等关键环节。针对工业视觉检测中的拼接错位、重影等问题,提供参数调优、图像预处理和算法选择等实战技巧,帮助开发者高效避坑并提升拼接精度。

weixin_28694169的博客 199

Android音频学习(一)——音频基础

在系统的学习Android音频之前,先了解音频的基础知识。

miemie2014的博客 1485

移动云海山数据库(He3DB)-MySQL关键类之THD

父类2:Query_arena 看它的元素定义Item * m_item_list,它内部一定维护着一个很大的列表 而Item又继承自Parse_tree_node,所以它内部一定维护着Query语句(存储过程)的相关解析后的元素,也就是抽象语法树的结节。MDL_context 元数据锁的上下文,维护元数据的锁,mdl.h代码中有其详细描述:元数据库锁的上下文信息,每个server都有这样一个上下文。THR_LOCK_INFO 线程锁信息,thr_lock.h代码中有其详细描述:拥有锁的线程的描述。

weixin_42744640的博客 573

习题加餐4. 冒险者工会

这个问题通过贪心算法解决,展示了贪心算法在解决一些优化问题中的强大能力。关键在于如何识别贪心选择的性质,并通过数学证明确保这种方法能够达到全局最优解。通过对问题的深入理解和逻辑推理,我们可以设计出有效的算法来解决问题,同时也需要注意代码实现中的细节,如排序和双指针的使用,以确保算法的效率和正确性。贪心算法的应用这个问题展示了贪心算法在实际问题中的应用。贪心算法通过在每一步选择当前最优的解决方案,期望最终达到全局最优解。该问题中,每次选择能力最接近但足以完成最难任务的冒险者,就是贪心选择的体现。

tang7mj的博客 1352

mysql thd_MySQL核心类THD介绍之user_connect

应元同学说要系统介绍一下THD类。我表示这个类太大,如果只是将字段意义依次列出意义不大,最好是碰到问题将相关的字段再说明,能关联更多信息。最近的一个patch中刚好碰到user_connect(好吧,是误用),就介绍一下。1、字段说明THD::user_connect字段是USER_CONN类型,声明在sql/structs.h.其作用是记录当前连接用户的信息。结构如下:typedef struc...

weixin_36174545的博客 402

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

mysql thd_MySQL核心类THD介绍之user_connect-阿里云开发者社区

应元同学说要系统介绍一下THD类。我表示这个类太大,如果只是将字段意义依次列出意义不大,最好是碰到问题将相关的字段再说明,能关联更多信息。最近的一个patch中刚好碰到user_connect(好吧,是误用),就介绍一下。1、字段说明THD::user_connect字段是USER_CONN类型,声明在sql/structs.h.其作用是记录当前连接用户的信息。结构如下:typedef struc...

weixin_39941262的博客 168

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

MYSQL 网络连接

assert(mp!= nullptr);#endif首先断言mp非空。为结构体动态分配内存,并将指针赋给。调用来初始化这个安全互斥锁,同时传入源文件名和行号。内部通常会:再调用初始化真正的原生互斥体。记录锁的创建位置、线程 ID 等信息,以便在死锁检测、锁定顺序检查或错误报告时提供调试信息。这种模式主要用于调试版本,帮助开发者发现互斥锁使用问题(如重复锁定、死锁、未释放等)。#else#endif直接调用初始化中的原生互斥体(例如或 Windows 的。

Piemon&Anokata的博客 497

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

mysql 自定义 plugin 源码,关于mysql plugin 自定义系统变量

1. 定义/*Plugin system variables.*/static long sysvar_one_value;static char *sysvar_two_value;static MYSQL_SYSVAR_LONG(simple_sysvar_one, sysvar_one_value,PLUGIN_VAR_RQCMDARG,"Simple fulltext pa...

weixin_31442209的博客 282

具身智能数据采集平台选型:开源对接与数据质量是关键

在机器人学习领域,具身智能的落地高度依赖真实操作数据,而高质量数据的获取离不开数据采集平台的选型。不同于仿真数据只能提供广度,真实数据中的接触物理与传感器噪声是模型泛化的根基,因此平台的数据质量与采集效率直接决定算法迭代速度。本文从系统架构视角拆解了采集平台的四个层级,重点剖析了开源对接的真实含义——不仅是提供API,更要求数据格式透明、通信基于ROS 2等开放标准、驱动可编译、训练框架适配。同时,针对采样频率、力传感器漂移、动作自然度等容易被忽视的质量暗坑给出了实操检测方法,并提供了从预算初筛到端到端验证

weixin_33985507的博客 273

IC秋招LDO电路分析:从内部框图到稳定性补偿与选型

线性稳压器是电源管理中最基础的一类器件,其核心思想是利用调整管消耗多余能量,将波动输入稳定为低噪声输出。低压差架构使得LDO在电池供电等场景中拥有独特优势,而负反馈环路则是决定其输出精度与动态性能的关键。实际工程中,输出电容的ESR会引入零点,直接影响到环路稳定性;PMOS调整管、误差放大器与基准源的配合方式也决定了设计成败。在IC秋招笔试中,LDO电路分析题覆盖了从原理推导、功耗效率计算到LDO与DCDC选型的完整链路,既考察基本功,也检验工程直觉。掌握内部框图、稳定性补偿和关键指标换算,不仅能应对手撕电

weixin_34293911的博客 365

MYSQL源码分析之-基础类之THD

@class THD 每个客户端连接都会创建一个独立的线程类作为线程连接和描述,线程和连接是一一对应的关系。THD类中包含线程的许多有用信息,处理客户端的连接不是线程的唯一用途,MySQL还有一些系统线程,如复制服务器进程和信...

congjuyu8987的博客 339

mysql thd_mysql的启动过程详解

有一天,两个不懂mysql内核的人想去了解mysql内核代码,两个人不是去调试代码、查找资料,而是在那边思考。因为不了解内核,所以边思考边去验证。使用的mysql代码是5.1.7,调试环境是windows平台下的vs2003。Bingxi:“alex,你觉得mysql的启动过程会是什么样的呢?我们以银行为例吧。”Alex:“嗯,bingxi。早上银行开门了,会先准备好环境,然后开门迎客,mysql...

weixin_36057482的博客 312

MYSQL笔记(几个比较重要的类)

<br />1.THD<br />文件:Sql_class.h<br />该类的父类为Statement和Open_tables_state。THD类包含大量的成员变量,包括当前查询语句及解析树指针、线程信息、线程使用数据库表的情况记录、客户端信息、通信协议等内容。<br />2.Item类<br />文件:Item.h<br />Item是表达式的核心,用于实现表达式,Item类的实例应包括:<br />1).SQL语句中某项的类似物,如where、order等<br />2).值<br />3).数据类

记录成长之路 1186

mysql的核心类和重要的源码文件

sql/sql_select.cc :包含着一些优化函数和一些数据检索算法的具体实现    ITEM_类  ITEM_类是mysql的每一个子系统都要用到的东西。之所以称之为ITEM_类,是因为从ITEM基类派生出许多子类甚至孙类。这些派生类被用来存储和处理mysql系统里的许多种数据,其中包括:参数、标识符 时间、字段、函数、数值、字符串等。ITEM基类定义在/sql/item.h源代

aeoluspu的专栏 1096

MySQL系列之源码浅析

源码才是王道。 真正的高手从来不是临场发挥,随机应变是外人看来的错觉。 1. 主函数sql/mysqld.cc中,代码如下:int main(int argc, char **argv) //标准入口函数 { MY_INIT(argv[0]);//调用mysys/My_init.c->my_init(),初始化mysql内部的系统库 logger.init_base(); //

魔幻世界 7311

mysql killed状态连接_MySQL: kill connection的实现简析

原创水平有限,有误请指出。仅仅作为学习参考和学习笔记。源码版本 5.7.22只研究了kill connection的情况。最近看了丁奇老师的mysql课程中 kill connection的部分,在平时的工作中,我们也经常用kill 命令进行杀掉某些会话,偶尔也会出现状态还是killed的情况,Oracle也遇到过。不由得感觉需要研究一下kill 会话的是如何实现的。刚好丁奇老师的这段提供了理论基...

weixin_31179927的博客 1740

总谐波失真--THD

转载自公子小白_城南的博客 http://blog.sina.com.cn/s/blog_155903a570102yep3.html 总谐波失真(Total Harmonic Distortion,THD )是指用信号源输入系统到时,输出信号比输入信号多出的额外谐波成分。功放工作时,由于电路不可避免的振荡或其他谐振产生的二次、三次谐波与实际输入信号叠加,在输出端输出的信号就不单纯是与输入信号完...

childboy的博客 3万+
上一篇: MySQL权限控制的设计缺陷?
下一篇: MySQL源码学习:InnoDB的ib_logfile写入策略
iteye_621
博客等级 码龄8年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值