【MySQL】sys系统库配置表
文章目录
- 一、sys_config表
- 1、sys_config表的结构
- 2、用户自定义配置选项变量
- 3、sys_config表中配置选项简析
- 二、sys_config_insert_set_user触发器和sys_config_update_set_user触发器
一、sys_config表
1、sys_config表的结构
sys_config表包含了sys系统库的配置选项,一行数据就是一个配置选项。sys_config是一个innodb表,是可持久化的。
sys_config表的结构如下。
variable:字段的名称
value:字段的值
set_time:修改时间
set_by:修改的用户
2、用户自定义配置选项变量
为了减少对sys_config表的直接读取次数,sys系统库中的视图和存储过程在需要使用这些配置选项时,首先会去查询用户自定义配置选项变量,变量的名字和sys_config表的variable字段的值一样,使用方式为@sys.variable,默认情况下用户自定义配置选项变量为NULL,会去sys_config表中读取,读取后会更新用户自定义变量的值,这也会导致不同会话中配置选项的值不同的问题。
- statement_truncate_len配置选项会影响format_statement()函数格式化语句的最大长度。默认值为64。
- 调用一次format_statement函数。发现@sys.statement_truncate_len变量的值被更新为64。
- 修改用户自定义变量值为16,sys_config表中还是64,但是format_statement读取的是用户自定义的配置选项变量,原来的SQL语句格式化为了16位。
3、sys_config表中配置选项简析
variable | value | set_by | 作用 |
---|---|---|---|
diagnostics.allow_i_s_tables | OFF | NULL | 如果此选项为ON,则diagnostics()存储过程在调用时会扫描INFORMATION_SCHEMA.TABLES表,找到所有的基表与STATISTICS表执行联结查询,扫描每个表的统计信息。 |
diagnostics.include_raw | OFF | NULL | 如果此选项为ON,则在diagnostics()存储过程的输出信息中会包括metrics视图中的原始输出信息 |
ps_thread_trx_info.max_length | 65535 | NULL | ps_thread_trx_info()函数生成的JSON输出结果的最大长度。默认值为65535字节。 |
statement_performance_analyzer.limit | 100 | NULL | 不具有内置限制的视图返回的最大行数。默认值为100 |
statement_performance_analyzer.view | NULL | NULL | |
statement_truncate_len | 64 | NULL | format_statement函数格式化语句最大长度 |
对sys_config表的insert和update操作会触发sys_config_insert_set_user触发器和sys_config_update_set_user触发器,这两个触发器的definer是sys@localhost
二、sys_config_insert_set_user触发器和sys_config_update_set_user触发器
当对sys_config表执行insert操作添加配置选项时,sys_config_insert_set_user触发器会将该配置选项的setby字段设置为当前用户名。
当对sys_config表添加配置选项时,sys_config_update_set_user触发器会将该配置选项的setby字段设置为当前用户。
保证触发器生效的三个注意点
- 这两个触发器的definer均为’mysql.sys’@‘localhost’,该用户在数据库安装时就被添加到了mysql.user表中,不要删除该用户,否则触发器无法执行。
- 这两个触发器对sys_config表的默认权限只有select,而设置setby字段需要update权限,所以要为’mysql.sys’@'localhost’用户授权。
grant update,insert,select on sys.* to 'mysql.sys'@'localhost';
- 有一个用户配置选项会控制触发器的开启状态。我们可以通过看触发器的内部实现了解。
在触发器启动时会判断@sys.ignore_sys_config_triggers的值,只有这个值为0时触发器才会修改setby字段。默认情况下@sys.ignore_sys_config_triggers为NULL,所以需要我们手动修改。
下面就是触发器成功启动的结果。
【MySQL】sys系统库配置表相关推荐
- mysql my.cof 配置表空间_my.conf配置大全
[client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock basedir ...
- mysql 4G内存配置表
[client] #password=your_password socket=/tmp/mysql.sock ###通信协议等等的保存,[mysqld]必须同时有此行 ##mysql.sock若丢 ...
- MySQL 中的系统库之sys 系统库
MySQL学习系列 系统库简介 以下系统库的介绍, 主要是扩展大家的知识面, 因为系统库中的数据很重要,没有对 MySQL 有全面通盘的了解, 不宜去操作其下的数据, 而且对系统库的管理维护是是 DB ...
- 记录mysql的配置表误删
mysql这四个表删不得 那是以为是我项目的表,不小心删库跑路了 完全删除mysql 删除mysql的数据文件 sudo rm /var/lib/mysql/ -R 删除mysql的配置文件 sudo ...
- mysqldump单个库导出_初相识 | 全方位认识 sys 系统库
前阵子,我们的"全方位认识performance_schema"系列为大家完整的介绍了performance_schema系统库.在我们的发布计划中为什么要把performance ...
- sys 系统库 笔记(一)—— 简介与快速入门
系列文章参考自<MySQL 性能优化金字塔法则>,删除了书里重复说明和过于复杂的一些解释,完整版请参考原书. 前面一系列笔记介绍了performance_schema系统库,把它放在最前面 ...
- 初相识 | 全方位认识 sys 系统库
前阵子,我们的"全方位认识performance_schema"系列为大家完整的介绍了performance_schema系统库.在我们的发布计划中为什么要把performance ...
- CentOS 6.5系统使用yum方式安装LAMP环境和phpMyAdmin,mysql8.0.1/mysql5.7.22+centos7,windows mysql安装、配置...
介绍如何在CentOs6.2下面使用YUM配置安装LAMP环境,一些兄弟也很喜欢使用编译的安装方法,个人觉得如果不是对服务器做定制,用yum安装稳定简单,何必去download&make&am ...
- MySQL 下载与配置教程(免安装版)
MySQL 下载与配置教程(免安装版) 说明 步骤 此博客已不再维护,更新内容将更新在另一篇博客中,链接:https://blog.csdn.net/wangpaiblog/article/detai ...
最新文章
- Java学习的30个目标以及系统架构师推荐的书
- OpenCV cv::reduce用法的实例(附完整代码)
- c语言将链表写入二进制文件_通过逐级遍历将二进制树转换为单链表的C程序
- 支持的存储类型有_跟我一起看博途1200系统手册之数据类型的介绍
- mysql 一对多 根据多条数据排序_优化的道路永无止境——Mysql的ICP及MRR
- skywalking与pinpoint全链路追踪方案对比
- Google Chrome 所有版本下载
- openwrt 需要高级浏览器_树莓派 + OpenWrt 实现 BT 下载机
- 显卡刷bios改型号_怎么刷显卡bios(显卡刷BIOS可以提高性能)
- 详细总结卡尔曼滤波原理+具体案例分析
- 英文电子书下载:salttiger.com
- PostgreSQL 视图
- 柔性电流传感器(柔性电流探头)的工作原理和特点是什么?
- [原]产品经理和韦小宝
- Python基础视频教程
- 区块链学习笔记:区块链浏览器
- NVMe-MI 时代的NVMe SSD监控和管理
- C 求函数参数的平均值
- php 元旦祝福,元旦祝福语 2019迎接2020句子
- 打开eclipse时出现了这怎样解决啊