您好,欢迎访问一九零五行业门户网

MySQL系统变量(systemvariables)_MySQL

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 setname: '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_buffermysql> show variables like 'sort_buffer%';+------------------+---------+| variable_name | value |+------------------+---------+| sort_buffer_size | 2097152 |+------------------+---------+--在省略global与session关键字的情形下为session级别mysql> set sort_buffer_size=1024*1024*4; --设置为4mmysql> 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 isolationname: '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-committedroot@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-readfred@localhost[(none)]> show variables like '%isolation%';+---------------+-----------------+| variable_name | value |+---------------+-----------------+| tx_isolation | repeatable-read |+---------------+-----------------+--在root会话中设置全局隔离级别为serializableroot@localhost[(none)]> set global transaction isolation level serializable;--注意,在root会话中 session级别还是为read-committedroot@localhost[(none)]> show variables like '%isolation%';+---------------+----------------+| variable_name | value |+---------------+----------------+| tx_isolation | read-committed |+---------------+----------------+--在root会话中我可以看到全局的值已经变为serializableroot@localhost[(none)]> show global variables like '%isolation%';+---------------+--------------+| variable_name | value |+---------------+--------------+| tx_isolation | serializable |+---------------+--------------+--在fred中全局的也变成了serializablefred@localhost[(none)]> show global variables like '%isolation%';+---------------+--------------+| variable_name | value |+---------------+--------------+| tx_isolation | serializable |+---------------+--------------+--从上面的演示来说,无论global级别如何设置,不会影响到当前session级别的设置--下面我们使用一个新用户登录来看看全局设置是否影响新会话robin@szdb:~> mysql -urobin--如下查询新会话的隔离级别等于全局的隔离级别robin@localhost[(none)]> show variables like '%isolation%';+---------------+--------------+| variable_name | value |+---------------+--------------+| tx_isolation | serializable |+---------------+--------------+4、如何获取变量值
除了通过前面演示的使用show global|session variables like 'vari_name'方式之外,我们可以通过查询information_schema数据中特定的表来获得这些变量的值。通过查询数据information_schema的表global_variablesroot@localhost[information_schema]> select variable_value from global_variables where -> variable_name='tx_isolation';+----------------+| variable_value |+----------------+| serializable |+----------------+--author: leshami--blog : http://blog.csdn.net/leshamiroot@localhost[information_schema]> select @@global.tx_isolation;+-----------------------+| @@global.tx_isolation |+-----------------------+| serializable |+-----------------------+root@localhost[information_schema]> select @@session.tx_isolation;+------------------------+| @@session.tx_isolation |+------------------------+| read-committed |+------------------------+--下面查询session_variables结果与查询global_variables获得的值相同,究其原因还在进一步研究中root@localhost[information_schema]> select * from session_variables where variable_name='tx_isolation';+---------------+----------------+| variable_name | variable_value |+---------------+----------------+| tx_isolation | serializable |+---------------+----------------+
5、总结
b、检索设置
c、其他注意事项
其它类似信息

推荐信息