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 |
|
注意:show variables优先显示会话级变量的值,如果这个值不存在,则显示全局级变量的值,当然你也可以加上GLOBAL或SESSION关键字区别:
1 |
|
在写一些存储过程时,可能需要引用系统变量的值,可以使用如下方法:
1 |
|
如果在变量名前没有级别限定符,将优先显示会话级的值。
最后一种查看变量值的方法是从INFORMATION_SCHEMA数据库里的 GLOBAL_VARIABLES 和 SESSION_VARIABLES 表获得。
1 |
|
设置和修改系统变量的值
在MySQL服务器启动时,有以下两种方法设置系统变量的值:
- 命令行参数,如:mysqld –max_connections=200
- 选项文件(my.cnf)
在MySQL服务器启动后,如果需要修改系统变量的值,可以通过SET语句:
1 |
|
如果在变量名前没有级别限定符,表示修改会话级变量。
注意:和启动时不一样的是,在运行时设置的变量不允许使用后缀字母’K’、‘M’等,但可以用表达式来达到相同的效果,如:
1 |
|
状态变量
状态变量可以使我们及时了解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 |
|