MySQL 命令之查看和设置服务器配置和状态

MySQL的选项文件(my.cnf)用于配置MySQL服务器,配置选项官方叫变量(Varialbes),但其实叫参数也是可以的,只要明白这俩是同一个东西就可以了。

MySQL的变量分为以下两种:

  • 系统变量:配置MySQL服务器的运行环境,可以用show variables查看
  • 状态变量:监控MySQL服务器的运行状态,可以用show status查看

不同的变量按其作用域的不同又可以分为以下两种:

  • 全局(GLOBAL)级:某个参数的值设置之后,对所有连接到MySQL服务的用户都生效,所有用户登录到MySQL后,该参数都是使用同一个值。
  • 会话(SESSION或LOCAL)级:某个参数的值设置之后,只对当前连接到MySQL服务器的当前会话生效,当前会话退出后,这个参数就恢复了默认值。并且当连接A登录的时候,这个参数对A生效。但是对于新开一个连接服务B,在B的会话中,设置的参数并不会生效。

系统变量

MySQL在建立连接时用全局级变量初始化会话级变量,但一旦连接建立之后,全局级变量的改变不会影响到会话级变量。有些系统变量同时拥有以上两个级别。

查看系统变量的值 show vairables

可以通过 show vairables 语句查看系统变量的值:

1
2
mysql> show variables like 'log%';
mysql> show variables where Variable_name like 'log%' and value='ON';

注意:show variables优先显示会话级变量的值,如果这个值不存在,则显示全局级变量的值,当然你也可以加上GLOBAL或SESSION关键字区别:

1
2
show global variables;
show session/local variables;

在写一些存储过程时,可能需要引用系统变量的值,可以使用如下方法:

1
2
3
@@GLOBAL.var_name
@@SESSION.var_name 或
@@LOCAL.var_name

如果在变量名前没有级别限定符,将优先显示会话级的值。

最后一种查看变量值的方法是从INFORMATION_SCHEMA数据库里的 GLOBAL_VARIABLES 和 SESSION_VARIABLES 表获得。

1
2
3
4
5
6
7
show variables
-- 相当于
select * from information_schema.SESSION_VARIABLES ; -- variables_name,variables_value

show global variables
-- 相当于
select * from information_schema.GLOBAL_VARIABLES ; -- variables_name,variables_value

设置和修改系统变量的值

在MySQL服务器启动时,有以下两种方法设置系统变量的值:

  • 命令行参数,如:mysqld –max_connections=200
  • 选项文件(my.cnf)

在MySQL服务器启动后,如果需要修改系统变量的值,可以通过SET语句:

1
2
3
4
SET GLOBAL var_name = value;
SET @@GLOBAL.var_name = value;
SET SESSION var_name = value;
SET @@SESSION.var_name = value;

如果在变量名前没有级别限定符,表示修改会话级变量。

注意:和启动时不一样的是,在运行时设置的变量不允许使用后缀字母’K’、‘M’等,但可以用表达式来达到相同的效果,如:

1
SET GLOBAL read_buffer_size = 210241024

状态变量

状态变量可以使我们及时了解MySQL服务器的运行状况,可以使用show status语句查看。

状态变量和相同变量类似,也分为全局级和会话级,show status也支持like匹配查询。

比较大的不同是状态变量status查看的参数值是由MySQL自己统计计算得到的。它是MySQL服务运行状态具体的量化体现。都是不可以修改的,也就是不能通过set xxx=yyy;的方式来改变它的值的。这种参数大多数以大写的英文字母开头。

查看状态变量show [session|global] status

show (session) status 查看系统运行的实时状态
show global status 查看全局的实时状态

相关的表

mysql中和variables和status相关的有4张表,都在 information_schema 库中

1
2
3
4
global_variables;   -- 全局变量
session_variables; -- session变量
global_status; --全局status
session_status; -- session status

MySQL 命令之查看和设置服务器配置和状态
https://flepeng.github.io/041-MySQL-21-命令-MySQL-命令之查看和设置服务器配置和状态/
作者
Lepeng
发布于
2021年3月6日
许可协议