-
Notifications
You must be signed in to change notification settings - Fork 111
global_variables与session_variables
xiaoboluo768 edited this page Jun 8, 2020
·
2 revisions
-
MySQL server维护着许多系统变量,在performance_schema中提供了如下表对全局、当前会话、指定线程的系统变量进行记录:
- global_variables:全局系统变量。只需要全局系统变量值的应用程序可以从该表中获取
- session_variables:当前会话的系统变量。只需要获取自己当前会话的系统变量值可以从该表中获取(注意,该表中包含了无会话级别的全局变量值,且该表不记录已断开连接的系统变量)
- variables_by_thread:按照线程ID为标识符记录的会话系统变量。想要在当前线程中查询其他指定线程ID的会话级别系统变量时,应用程序可以从该表中获取(注意,该表中仅包含有会话级别的系统变量)
-
会话变量表(session_variables,variables_by_thread)仅包含活跃会话的信息,已经终止的会话不会记录
-
performance_schema记录系统变量的这些表不支持TRUNCATE TABLE语句
-
global_variables和session_variables表字段含义如下:
- VARIABLE_NAME:系统变量名
- VARIABLE_VALUE:系统变量值。对于global_variables,此列包含全局值。对于session_variables,此列包含当前会话生效的变量值
-
variables_by_thread表字段含义如下:
- THREAD_ID:会话级别系统变量对应的线程ID
- VARIABLE_NAME:会话级别系统变量名
- VARIABLE_VALUE:会话级别系统变量值
-
variables_by_thread表仅包含关于前台线程的会话级别系统变量信息。且只记录拥有会话级别的系统变量,另外,如果在该表中有不能够被记录的会话级别系统变量,那么将增加状态变量Performance_schema_thread_instances_lost的值
-
PS:show_compatibility_56系统变量的值会影响这些表中的信息记录,详见链接:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_show_compatibility_56
-
表记录内容示例
# global_variables表
admin@localhost : performance_schema 09:50:31> select * from global_variables limit 5;
+--------------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+--------------------------+----------------+
| auto_increment_increment | 2 |
| auto_increment_offset | 2 |
| autocommit | ON |
| automatic_sp_privileges | ON |
| avoid_temporal_upgrade | OFF |
+--------------------------+----------------+
5 rows in set (0.01 sec)
# session_variables表
admin@localhost : performance_schema 09:50:40> select * from session_variables limit 5;
+--------------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+--------------------------+----------------+
| auto_increment_increment | 2 |
| auto_increment_offset | 2 |
| autocommit | ON |
| automatic_sp_privileges | ON |
| avoid_temporal_upgrade | OFF |
+--------------------------+----------------+
5 rows in set (0.00 sec)
# variables_by_thread表
admin@localhost : performance_schema 09:50:52> select * from variables_by_thread limit 5;
+-----------+-----------------------------------------+----------------+
| THREAD_ID | VARIABLE_NAME | VARIABLE_VALUE |
+-----------+-----------------------------------------+----------------+
| 45 | auto_increment_increment | 2 |
| 45 | auto_increment_offset | 2 |
| 45 | autocommit | ON |
| 45 | big_tables | OFF |
| 45 | binlog_direct_non_transactional_updates | OFF |
+-----------+-----------------------------------------+----------------+
5 rows in set (0.00 sec)
- 表结构定义
# global_variables表
CREATE TABLE `global_variables` (
`VARIABLE_NAME` varchar(64) NOT NULL,
`VARIABLE_VALUE` varchar(1024) DEFAULT NULL
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
# session_variables表
CREATE TABLE `session_variables` (
`VARIABLE_NAME` varchar(64) NOT NULL,
`VARIABLE_VALUE` varchar(1024) DEFAULT NULL
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
# variables_by_thread表
CREATE TABLE `variables_by_thread` (
`THREAD_ID` bigint(20) unsigned NOT NULL,
`VARIABLE_NAME` varchar(64) NOT NULL,
`VARIABLE_VALUE` varchar(1024) DEFAULT NULL
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
上一篇: table_handles表 | 下一篇: global_status与session_status表
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!