29.12.14.2 Performance Schema variables_info 表
variables_info 表显示每个系统变量的来源,以及其值的范围。
variables_info 表具有以下列:
-
VARIABLE_NAME变量名称。
-
VARIABLE_SOURCE变量最近设置的来源:
-
COMMAND_LINE变量在命令行上设置。
-
COMPILED变量使用编译时的默认值。
COMPILED是未设置其他方式的变量的默认值。 -
DYNAMIC变量在运行时设置。这包括使用
init_file系统变量指定的文件。 -
EXPLICIT变量从选项文件中设置,文件名使用
--defaults-file选项指定。 -
EXTRA变量从选项文件中设置,文件名使用
--defaults-extra-file选项指定。 -
GLOBAL变量从全局选项文件中设置。这包括不受
persisted_globals_load禁用的服务器选项文件。 -
LOGIN变量从用户登录路径文件(
~/.mylogin.cnf)中设置。 -
PERSISTED变量从服务器特定的mysqld-auto.cnf选项文件中设置。没有行具有这个值,如果服务器使用
persisted_globals_load禁用。 -
SERVER变量从服务器特定的
$MYSQL_HOME/my.cnf选项文件中设置。关于MYSQL_HOME的设置,请参阅第6.2.2.2节,“使用选项文件”。 -
USER变量从用户特定的~/.my.cnf选项文件中设置。
-
-
VARIABLE_PATH如果变量从选项文件中设置,
VARIABLE_PATH是该文件的路径名。否则,该值为空字符串。 -
MIN_VALUE,MAX_VALUE最小和最大允许的变量值。对于没有这种值的变量(即非数字变量),这两个值都是0。
-
SET_TIME变量最后被设置的时间。默认情况下,这是服务器在启动时初始化全局系统变量的时间。
-
SET_USER,SET_HOST变量最后被设置的客户端用户名和主机名。如果客户端以
user17身份从主机host34.example.com连接,使用账户'user17'@'%.example.com,那么SET_USER和SET_HOST分别是user17和host34.example.com。对于代理用户连接,这些值对应于外部(代理)用户,而不是被代理用户,对于权限检查。默认情况下,每个列的值都是空字符串,表示变量自服务器启动以来没有被设置。
性能 Schema variables_info 表没有索引。
TRUNCATE TABLE 对variables_info 表不可用。
如果在运行时将变量的VARIABLE_SOURCE值设置为除DYNAMIC以外的值,VARIABLE_SOURCE将变为DYNAMIC,VARIABLE_PATH将变为空字符串。
只有会话值的系统变量(例如debug_sync)不能在启动时设置或持久化。对于会话-only 系统变量,VARIABLE_SOURCE只能是COMPILED或DYNAMIC。
如果系统变量的VARIABLE_SOURCE值不正常,考虑服务器启动方法。例如mysqld_safe 读取选项文件,并将其中找到的选项作为命令行参数传递给mysqld。因此,某些系统变量在variables_info 中可能显示为COMMAND_LINE,而不是GLOBAL或SERVER,这可能与您期望的不同。
一些使用variables_info 表的示例查询,带有代表性输出:
-
显示命令行设置的变量:
mysql> SELECT VARIABLE_NAME FROM performance_schema.variables_info WHERE VARIABLE_SOURCE = 'COMMAND_LINE' ORDER BY VARIABLE_NAME; +---------------+ | VARIABLE_NAME | +---------------+ | basedir | | datadir | | log_error | | pid_file | | plugin_dir | | port | +---------------+ -
显示从持久存储设置的变量:
mysql> SELECT VARIABLE_NAME FROM performance_schema.variables_info WHERE VARIABLE_SOURCE = 'PERSISTED' ORDER BY VARIABLE_NAME; +--------------------------+ | VARIABLE_NAME | +--------------------------+ | event_scheduler | | max_connections | | validate_password.policy | +--------------------------+ -
将
variables_info与global_variables表连接,以显示持久变量的当前值,以及它们的取值范围:mysql> SELECT VI.VARIABLE_NAME, GV.VARIABLE_VALUE, VI.MIN_VALUE,VI.MAX_VALUE FROM performance_schema.variables_info AS VI INNER JOIN performance_schema.global_variables AS GV USING(VARIABLE_NAME) WHERE VI.VARIABLE_SOURCE = 'PERSISTED' ORDER BY VARIABLE_NAME; +--------------------------+----------------+-----------+-----------+ | VARIABLE_NAME | VARIABLE_VALUE | MIN_VALUE | MAX_VALUE | +--------------------------+----------------+-----------+-----------+ | event_scheduler | ON | 0 | 0 | | max_connections | 200 | 1 | 100000 | | validate_password.policy | STRONG | 0 | 0 | +--------------------------+----------------+-----------+-----------+