合 MySQL参数和状态查询
简介
MySQL的变量分为以下两种:
1)系统变量:配置MySQL服务器的运行环境,可以用show variables查看。
2)状态变量:监控MySQL服务器的运行状态,可以用show status查看。
Mysql参数文件中的参数可以分为2种类型:动态(dynamic)参数和静态参数(staitic)
(1)dynamic :可以通过set进行实时修改
(2)static,只能在my.cnf里面修改,需要restart生效
动态参数意味着可以在mysql实例运行中进行修改,set global sort_buffer_size=32999999;修改后,别的connection重新进行连接就可以生效了。
生效范围分为:global和session。
静态的说明在整个mysql实例运行期间不得进行修改,就类似一个只读的read only
系统变量
系统变量按其作用域的不同可以分为以下两种:
1)全局(GLOBAL)级:对整个MySQL服务器有效
2)会话(SESSION或LOCAL)级:只影响当前会话
有些变量同时拥有以上两个级别,MySQL将在建立连接时用全局级变量初始化会话级变量,但一旦连接建立之后,全局级变量的改变不会影响到会话级变量。
查看系统变量的值
可以通过show vairables语句查看系统变量的值:
1 2 3 | mysql> show variables like 'log%'; mysql> show variables where Variable_name like 'log%' and value='ON'; |
注意:show variables优先显示会话级变量的值,如果这个值不存在,则显示全局级变量的值,当然你也可以加上GLOBAL或SESSION关键字区别:
1 2 3 | 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表获得(在5.7以上需要设置:set global show_compatibility_56=on;)。
设置和修改系统变量的值
在MySQL服务器启动时,有以下两种方法设置系统变量的值:
1)命令行参数,如:mysqld --max_connections=200
2)选项文件(my.cnf)
在MySQL服务器启动后,如果需要修改系统变量的值,可以通过SET语句:
1 2 3 4 5 6 7 | SET GLOBAL var_name = value; SET @@GLOBAL.var_name = value; SET SESSION var_name = value; SET @@SESSION.var_name = value; |
如果在变量名前没有级别限定符,表示修改会话级变量。