MySQL 系统变量(system variables)(3)

4、如何获取变量值

除了通过前面演示的使用show global|session variables like 'vari_name'方式之外,我们可以通过查询
information_schema数据中特定的表来获得这些变量的值。
通过查询数据information_schema的表global_variables

root@localhost[information_schema]> select variable_value from global_variables where
    -> variable_name='tx_isolation';
+----------------+
| variable_value |
+----------------+
| SERIALIZABLE  |
+----------------+

--Author: Leshami
--Blog  :

root@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  |    --经过重新设置一次session级别的tx_isolation后查询正常。补充@20140928
+---------------+----------------+

5、总结
a、设置方法
    要想设置一个GLOBAL变量的值,使用下面的语法:
      mysql> SET GLOBAL sort_buffer_size=value;
      mysql> SET @@global.sort_buffer_size=value;
 
    要想设置一个SESSION变量的值,使用下面的语法:
      mysql> SET SESSION sort_buffer_size=value;
      mysql> SET @@session.sort_buffer_size=value;
      mysql> SET sort_buffer_size=value;
      LOCAL是SESSION的同义词。
    如果设置变量时不指定GLOBAL、SESSION或者LOCAL,默认使用SESSION。

b、检索设置 
    要想检索一个GLOBAL变量的值,使用下面的语法:
      mysql> SELECT @@global.sort_buffer_size;
      mysql> SHOW GLOBAL VARIABLES like 'sort_buffer_size';
 
    要想检索一个SESSION变量的值,使用下面的语法:
      mysql> SELECT @@sort_buffer_size;
      mysql> SELECT @@session.sort_buffer_size;
      mysql> SHOW SESSION VARIABLES like 'sort_buffer_size';
    这里,LOCAL也是SESSION的同义词。

c、其他注意事项 
    当你用SELECT @@var_name搜索一个变量时(也就是说,不指定global.、session.或者local.),
    MySQL返回SESSION值(如果存在),否则返回GLOBAL值。
    对于SHOW VARIABLES,如果不指定GLOBAL、SESSION或者LOCAL,MySQL返回SESSION值。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e67833cc1c5863b6db3c4e7acee1b213.html