目录
一、mysql变量介绍
mysqld服务维护两种变量
- 全局变量影响服务器的全局操作
- 会话变量影响具体客户端连接相关操作
1、服务器启动时,将所有全局变量初始化为默认值。可以在选项文件或命令行中指定的选项来更改这些默认值。服务器启动后,通过连接服务器并执行SET GLOBAL var_name语句可以更改动态全局变量。要想更改全局变量,必须具有SUPER权限。
2、服务器还为每个客户端连接维护会话变量。连接时使用相应全局变量的当前值对客户端会话变量进行初始化。客户可以通过SET SESSION var_name语句来更改动态会话变量。设置会话变量不需要特殊权限,但客户可以只更改自己的会话变量,而不更改其它客户的会话变量。
3、任何访问全局变量的客户端都可以看见对全局变量的更改。但是,它只影响在更改后连接的从该全局变量初始化相应会话变量的客户端。它不会影响已经连接上的客户端的会话变量(甚至是执行SET GLOBAL语句的客户端)。
总之:全局变量的影响是全局的,会话变量的影响是当前客户端的
二、查看系统变量
mysql> SHOW VARIABLES;
+---------------------------------+-------------------------------------------+
| Variable_name | Value |
+---------------------------------+-------------------------------------------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
....
mysql> SHOW VARIABLES like "auto_increment_increment";
+---------------------------------+-------------------------------------------+
| Variable_name | Value |
+---------------------------------+-------------------------------------------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
....
三、设置系统变量
要想显式指定是否设置全局或会话变量,使用GLOBAL或SESSION选项:
mysql> SET GLOBAL sort_buffer_size = 10 * 1024 * 1024; //全局变量
mysql> SET SESSION sort_buffer_size = 10 * 1024 * 1024; //客户端变量
两个选项均没有,则语句设置会话变量,默认则是会话变量。
注意事项:
当在配置文件中设置变量时,变量值可以使用后缀K、M或G分别表示千字节、兆字节或gigabytes。
但运行时,使用SET语句来设置系统变量。此时,不能使用后缀,但值可以采取下列表达式:
mysql> SET sort_buffer_size = 10 * 1024 * 1024;