类似于Oracle的参数文件,MySQL的选项文件(如my.cnf)用于配置MySQL服务器,但和Oracle叫法不一样,在MySQL里, 官方叫变量(Varialbes),但其实叫参数也是可以的,只要明白这俩是同一个东西就可以了。
MySQL的变量分为以下两种:
1)系统变量:配置MySQL服务器的运行环境,可以用show variables查看
2)状态变量:监控MySQL服务器的运行状态,可以用show status查看
 
系统变量
系统变量按其作用域的不同可以分为以下两种:
1)分为全局(GLOBAL)级:对整个MySQL服务器有效
2)会话(SESSION或LOCAL)级:只影响当前会话
有些变量同时拥有以上两个级别,MySQL将在建立连接时用全局级变量初始化会话级变量,但一旦连接建立之后,全局级变量的改变不会影响到会话级变量。
查看系统变量的值
可以通过show vairables语句查看系统变量的值:
[sql] 
mysql> show variables like 'log%';  
mysql> show variables where Variable_name like 'log%' and value='ON';  
注意:show variables优先显示会话级变量的值,如果这个值不存在,则显示全局级变量的值,当然你也可以加上GLOBAL或SESSION关键字区别:
[sql] 
show global variables;  
show session/local variables;  
在写一些存储过程时,可能需要引用系统变量的值,可以使用如下方法:
[sql] 
@@GLOBAL.var_name  
@@SESSION.var_name 或  
@@LOCAL.var_name  
如果在变量名前没有级别限定符,将优先显示会话级的值。
最后一种查看变量值的方法是从INFORMATION_SCHEMA数据库里的GLOBAL_VARIABLES和SESSION_VARIABLES表获得。
 
 

设置和修改系统变量的值

在MySQL服务器启动时,有以下两种方法设置系统变量的值:
1)命令行参数,如:mysqld --max_connections=200
2)选项文件(my.cnf)
在MySQL服务器启动后,如果需要修改系统变量的值,可以通过SET语句:
[plain] 
SET GLOBAL var_name = value;  
SET @@GLOBAL.var_name = value;  
SET SESSION var_name = value;  
SET @@SESSION.var_name = value;  
如果在变量名前没有级别限定符,表示修改会话级变量。
注意:和启动时不一样的是,在运行时设置的变量不允许使用后缀字母'K'、‘M'等,但可以用表达式来达到相同的效果,如:
[sql] 
SET GLOBAL read_buffer_size = 2*1024*1024  
 
这里一个容易把人搞蒙的地方是如果查询时使用的是show variables的话,会发现设置好像并没有生效,这是因为单纯使用show variables的话就等同于使用的是show session variables,查询的是会话变量,只有使用show global variables,查询的才是全局变量。

网络上很多人都抱怨说他们set global之后使用show variables查询没有发现改变,原因就在于混淆了会话变量和全局变量,如果仅仅想修改会话变量的话,可以使用类似set wait_timeout=10;或者set session wait_timeout=10;这样的语法。

 
状态变量
状态变量可以使我们及时了解MySQL服务器的运行状况,可以使用show status语句查看。
状态变量和相同变量类似,也分为全局级和会话级,show status也支持like匹配查询,比较大的不同是状态变量只能由MySQL服务器本身设置和修改,对于用户来说是只读的,不可以通过SET语句设置和修改它们。

最新文章

  1. Linux.NET学习手记(7)
  2. 15-static和extern关键字1-对函数的作用
  3. 剑指Offer面试题:34.翻转单词顺序VS左旋转字符串
  4. div的一些易出错地方
  5. 交叉编译inetutils并配置telnet服务
  6. centos 输入密码正确进不去系统
  7. svn无法更新解决方案
  8. linux crontab定时执行shell脚本
  9. Java调用摄像头截图
  10. LeetCode OJ 73. Set Matrix Zeroes
  11. PHP+AJAX 地区三级联动代码
  12. 使用jquery-qrcode在页面上生成二维码,支持中文
  13. HashMap 相关面试题及其解答
  14. SpringBoot整合mybatis多数据源,支持分布式事务
  15. Redis做LRU缓存
  16. iOS库
  17. mysql字段添加修改删除
  18. hibernate的flush()、refresh()、clear()针对一级缓存的操作的区别
  19. python http post json
  20. android开发学习之ViewPager滑动事件讲解

热门文章

  1. Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系。
  2. mysql根据查询结果,创建表
  3. 基于struts2框架文件的上传与下载
  4. MyBitis(iBitis)系列随笔之三:简单实现CRUD
  5. django定义app名称
  6. 计算某个目录下所有文件的MD5值
  7. Docker(1)在CentOS上的安装与卸载
  8. 第十一篇:Linux中权限的再讨论( 下 )
  9. iOS UILable 高度自适
  10. 文艺青年装B指南