MySQL系统变量(system variables)实际上是一些系统参数,用于初始化或设定数据库对系统资源的占用,文件存放位置等等。这些个系统变量可以分为全局以及会话级别层面来修改,有些也可以进行动态修改。本文主要介绍了系统变量的一些概念以及如何设置查看这些系统变量。
1、什么是系统变量
对于有关涉及到size的设置值,可以使用后缀K、M或G分别表示千字节、兆字节或gigabytes,不区分大小写。
--当前的版本
mysql> show variables like 'version%';
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| version | 5.5.37 |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+------------------------------+
--获取有关set的帮助
mysql> help set
Name: 'SET'
Description:
Syntax:
SET variable_assignment [, variable_assignment] ...
variable_assignment:
user_var_name = expr
| [GLOBAL | SESSION] system_var_name = expr
| [@@global. | @@session. | @@]system_var_name = expr
--查看全部系统变量
root@localhost[tempdb]> show variables; --该命令会输出当前系统全部系统变量
--查看sort_buffer
mysql> show variables like 'sort_buffer%';
+------------------+---------+
| Variable_name | Value |
+------------------+---------+
| sort_buffer_size | 2097152 |
+------------------+---------+
--在省略global与session关键字的情形下为session级别
mysql> set sort_buffer_size=1024*1024*4; --设置为4M
mysql> show variables like 'sort_buffer%';
+------------------+---------+
| Variable_name | Value |
+------------------+---------+
| sort_buffer_size | 4194304 |
+------------------+---------+
--恢复到缺省值
mysql> set sort_buffer_size=default;
mysql> show variables like 'sort_buffer%';
+------------------+---------+
| Variable_name | Value |
+------------------+---------+
| sort_buffer_size | 2097152 |
+------------------+---------+
3、全局与会话级别设置示例
--如何设置隔离级别
mysql> help isolation
Name: 'ISOLATION'
Description:
Syntax:
SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL
{
REPEATABLE READ
| READ COMMITTED
| READ UNCOMMITTED
| SERIALIZABLE
}
--下面我们通过演示隔离级别来设置全局与session级别变量
--查看当前session级别的隔离方式
root@localhost[(none)]> show variables like '%isolation%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| tx_isolation | REPEATABLE-READ |
+---------------+-----------------+
--修改当前session级别的隔离方式为READ-COMMITTED
root@localhost[(none)]> set session transaction isolation level read committed;
root@localhost[(none)]> show variables like '%isolation%';
+---------------+----------------+
| Variable_name | Value |
+---------------+----------------+
| tx_isolation | READ-COMMITTED |
+---------------+----------------+
--另外的一个session , 登录用户为fred
--当前sessioin级别继承全局隔离级别为REPEATABLE-READ
fred@localhost[(none)]> show variables like '%isolation%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| tx_isolation | REPEATABLE-READ |
+---------------+-----------------+
--在root会话中设置全局隔离级别为serializable
root@localhost[(none)]> set global transaction isolation level serializable;
--注意,在root会话中 session级别还是为READ-COMMITTED
root@localhost[(none)]> show variables like '%isolation%';
+---------------+----------------+
| Variable_name | Value |
+---------