该 variables_info
表显示每个系统变量的最新设置来源和其值范围。
该 variables_info
表具有以下列:
-
VARIABLE_NAME
变量名称。
-
VARIABLE_SOURCE
变量最近一次设置的来源:
-
COMMAND_LINE
变量是在命令行上设置的。
-
COMPILED
变量具有编译时的默认值。
COMPILED
是未以其他方式设置的变量的值。 -
DYNAMIC
变量是在运行时设置的。这包括在使用
init_file
系统变量指定的文件中设置的变量。 -
EXPLICIT
变量是从使用
--defaults-file
选项命名的选项文件中设置的。 -
EXTRA
变量是从使用
--defaults-extra-file
选项命名的选项文件中设置的。 -
GLOBAL
变量是从全局选项文件中设置的。这包括不在
EXPLICIT
、EXTRA
、LOGIN
、PERSISTED
、SERVER
或USER
中的选项文件。 -
LOGIN
变量是从用户特定的登录路径文件 (
~/.mylogin.cnf
) 中设置的。 -
PERSISTED
变量是从服务器特定的
mysqld-auto.cnf
选项文件中设置的。如果服务器以persisted_globals_load
禁用启动,则没有行具有该值。 -
SERVER
变量是从服务器特定的
选项文件中设置的。有关$MYSQL_HOME
/my.cnfMYSQL_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
。对于代理用户连接,这些值对应于外部(代理)用户,而不是对应的被代理用户。每个列的默认值为空字符串,表示变量自服务器启动以来未被设置。
该 variables_info
表没有索引。
TRUNCATE TABLE
不允许用于 variables_info
表。
如果在运行时设置了一个变量,且其 VARIABLE_SOURCE
值不是 DYNAMIC
,那么 VARIABLE_SOURCE
将变为 DYNAMIC
,而 VARIABLE_PATH
将变为空字符串。
某些系统变量只有会话值(例如 debug_sync
)不能在启动时设置或持久化。对于会话专用系统变量,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 | +--------------------------+----------------+-----------+-----------+