17 mysql global_variables session_variables

前言

这是一个关于 mysql 中的一些配置的探索 

起因是需要 看一下 mysql 自增长的实现, 这里面涉及到两个变量 

auto_increment_increment, auto_increment_offset, 然后 需要探索一下 这两个变量的来历 

然后 就有了这里的相关介绍 

global_variables 的初始化

global_variables 来自于外部 

可以看到 在 main 入口的地方, 已经被初始化一次了 

init_common_variables 中有对 global_system_variables 做一定的初始化 

线程中的 variables 的初始化 

在线程的构造方法中, 初始化为 global_system_variables 然后之后再进行更新 

配置文件中的配置对应于哪里?

在 my.cnf 中增加, max_allowed_packet = 100M

然后 来调试看一下, 入口的地方 max_allowed_packet 为 4194304, 4M

设置我们配置的 max_allowed_packet 的值的地方是在这里 my_handle_options

我们在 my.cnf 中增加的配置, 是作为 mysqld 的命令行参数传递进来的 

将 my.cnf 中的配置附加到 程序参数的地方是在 load_defaults 中, 之前是 “/root/mysql/mysql-5.7.27/bin/mysqld --user=root”更新之后为 “/root/mysql/mysql-5.7.27/bin/mysqld --max_allowed_packet=100M --args-seprator-- --user=root

set global max_allowed_packet = 1011000 

假设我这里执行 “set global max_allowed_packet = 1011000;”

如下地方是计算保存的值的地方, 这里有一定的 调整, 比如这里 option.block_size 为 1024, 1011000 按照 1024 对齐, 计算得到的结果为 1010688

具体更新 global_system_variables.max_allowed_packet 的地方如下

global_var(T) 获取的是 global_system_variables 中 max_allowed_packet 的指针 

然后这里设置其值为 1010688

set session autocommit = 1

其他的预处理 同上, 我们这里主要看一下 更新的哪里的数据

这里和 全局处理差不多, 只是这里是使用的 session_var_ptr 获取的当前线程的 variables

获取目标变量地址的地方

是基于 THD->variables, 获取 autocommit 的偏移, 作为指针返回 

为什么上面不使用 max_allowed_packet 进行测试呢 

因为 session 范围内, max_allowed_packet 是只读的, 然后 会响应 ER_VARIABLE_IS_READONLY[1621] 给客户端

具体的各个变量的相关配置 是在这里, 定义了需要的各类属性

show variables / show global variables 

这里来看一下 show variables 的实现  

查询的实际上是 performance_schema 中的 global_variables, session_variables

这两张表示 逻辑上的数据结构

真实数据是 取自于 内存中, 比如 global_variables 来自于 global_system_variables, session_variables 来自于 THD.variables

这里是从 global_system_variables 取数据的地方, 可以看到 performance_schema 是由 PFS 引擎支撑实现的 

这里是从 global_system_variables 取数据的地方, 然后 这里拿到的数据 放到了 m_cache 中, 这个是后面 迭代当前表数据的基础

也就是 system_variables 中的数据来自于 global_system_variables

在更上层 table_global_variables 这一层级是由 m_sysvar_cache 来维护这些变量, 可以理解为 m_sysvar_cache 中组合了上面的 m_cache

这里是遍历 整张表的地方, ha_rnd_next 中实现的具体的迭代 

具体的迭代的实现, 遍历的是 m_sysvar_cache 中的 m_cache 的相关数据 

这里是填充每一行数据的地方, 填充对应的 key, value

session 变量这边同样的道理, 只是说 他数据是取自当前 线程

有几种取数据的方式, 如下是 直接通过 偏移获取

如下是通过 sys_var_tmp 获取 

完 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/103398.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

核货宝:收银系统后台一般是怎样的,有哪些功能

收银系统后台是一个重要的管理工具,它为企业提供了对收银机的全面控制和配置。收银系统后台是一个用于管理和配置收银机的软件界面。它通常由以下几个主要部分组成: 1. 登录和权限管理 收银系统后台需要一个安全的登录系统,以确保只有授权人…

群晖(Synology)NAS 后台安装 Docker 后配置 PostgreSQL

群晖(Synology)NAS 的后台在新版本对 Docker 不再称为 Docker,现在改称为 Container Manager 了。 单击进入后运行 Container Manager。 PostgreSQL 容器 针对 PostgreSQL 的容器,我们选择容器后,如果你已经安装了 P…

OpenCV 02(色彩空间)

一、OpenCV的色彩空间 1.1 RGB和BGR 最常见的色彩空间就是RGB, 人眼也是基于RGB的色彩空间去分辨颜色的. OpenCV默认使用的是BGR. BGR和RGB色彩空间的区别在于图片在色彩通道上的排列顺序不同. 显示图片的时候需要注意适配图片的色彩空间和显示环境的色彩空间.比如传入的图片…

(数字图像处理MATLAB+Python)第十二章图像编码-第三、四节:有损编码和JPEG

文章目录 一:有损编码(1)预测编码A:概述B:DM编码C:最优预测器 (2)变换编码A:概述B:实现变换编码的主要问题 二:JPEG 一:有损编码 &am…

1000元订金?华为折叠屏手机MateX5今日开始预订,售价尚未公布

华为最新款折叠屏手机Mate X5今日在华为商城开始预订,吸引了众多消费者的关注。预订时需交纳1000元的订金,而具体售价尚未公布。据华为商城配置表显示,Mate X5预计将搭载Mate 60系列同款麒麟9000S处理器,或可能搭载麒麟9100处理器…

Navicat连接openGauss数据库报错

错误信息:fe_sendauth:invalid authentication request from server:AUTH_REQ_SASL_CONT without AUTH_REQ_SASL 解决步骤: 1)关闭防火墙: 切换root用户执行:su - root 输入密码 systemctl status firewalld 查…

YOLOV7改进-添加P2和P6检测层(以YOLOV7-Tiny为例)

下载三个配置文件地址 1、加p6 1、配置文件添加 2、让它自己利用k-means算法进行聚类 3、如果从8或9出来,在这里改 完整

Container容器

Container继承体系 Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;Panel可以容纳其他组件,但不能独立存在,它必须内嵌其他容器中使用,默认使用FlowLayout管理其内部组件布局;ScrollPane 是 一个带滚动条…

K210-CanMV IDE开发软件

K210-CanMV IDE开发软件 界面功能简介连接设备临时运行开机运行程序 界面功能简介 区域①菜单栏:操作文件,使用工具等。 区域②快捷按钮:区域①中的文件和编辑中部分功能的快捷方式。 区域③连接设备:连接设备和程序控制按钮。 …

WebDAV之π-Disk派盘 + 百灵创作

百灵创作是一款简约而不简单、功能强大且安全的高颜值码字工具,为网络写手和小说作者提供跨平台的写作环境,并提供强大的数据备份和云同步技术,以保障作者的数据安全,并提供流畅的多端无缝切换体验。 百灵创作的特点和功能包括: 简约而不简单:提供简洁直观的界面和操作,…

英飞凌TC3xx--深度手撕HSM安全启动(三)--TC3xx HSM系统架构

今天聊TC3xx HSM系统,包括所用内核、UCB相关信息、Host和HSM交互方式。 1、HSM系统架构 下图来源于英飞凌官网培训材料。 TC3xx的HSM内核是一颗32位的ARM Cortex M3,主频可达100MHz,支持对称算法AES128、非对称算法PKC(Public Key Crypto) ECC256、Hash SHA2,以及T…

ABY2.0:更低的通信开销

参考文献: [ABY] Demmler D, Schneider T, Zohner M. ABY-A framework for efficient mixed-protocol secure two-party computation[C]//NDSS. 2015.[ABY3] Mohassel P, Rindal P. ABY3: A mixed protocol framework for machine learning[C]//Proceedings of the…