在MySQL数据库中,变量分为系统变量(以@@开头)以及用户自定义变量(以@开头)。
1.全局系统变量与会话系统变量
每一个MySQL客户机成功连接MySQL服务器后,都会产生与之对应的会话。
会话期间,MySQL服务实例会在MySQL服务器内存中生成与该会话对应的会话系统变量。这些会话系统变量的初始值是全局系统变量值的拷贝。
由于各会话在会话期间所做的操作不尽相同,为了标记各个会话,会话系统变量又新增了12个变量,具体情况如图4.1所示。
图4.1 MySQL中变量
2.查看系统变量的值
使用“show global variables;”命令即可查看MySQL服务器内存中所有的全局系统变量信息(有393项之多)。
使用“show session variables;”命令即可查看与当前会话相关的所有会话系统变量以及所有的全局系统变量(有405项之多),此处session关键字可以省略。
MySQL中有一些系统变量仅仅是全局系统变量。例如 innodb_data_file_path。
·show global variables like 'innodb_data_file_path';
·show session variables like 'innodb_data_file_path';
·show variables like 'innodb_data_file_path';
MySQL中有一些系统变量仅仅是会话系统变量。例如MySQL连接ID会话系统变量pseudo_thread_id。
·show session variables like 'pseudo_thread_id';
·show variables like 'pseudo_thread_id';
MySQL中有一些系统变量既是全局系统变量,又是会话系统变量。例如系统变量character_set_client 既是全局系统变量,又是会话系统变量。
此时查看会话系统变量的方法:
·show session variables like 'character_set_client';
·show variables like 'character_set_client';
此时查看全局系统变量的方法:(www.xing528.com)
show global variables like 'character_set_client';
3.修改系统变量的值
作为MySQL编码规范,MySQL中的系统变量以两个“@”开头。
·@@global仅仅用于标记全局系统变量;
·@@session仅仅用于标记会话系统变量;
·@@首先标记会话系统变量,如果会话系统变量不存在,则标记全局系统变量。
修改系统变量的值有三种方法:
方法一:修改MySQL源代码,然后对MySQL源代码重新编译(该方法适用于MySQL高级用户,这里不作阐述)。
方法二:最为简单的方法是通过修改MySQL配置文件,继而修改MySQL系统变量的值(该方法需要重启MySQL服务)。
方法三:在MySQL服务运行期间,使用“set”命令重新设置系统变量的值。
设置全局系统变量的值的方法:
·set @@global.innodb_file_per_table = default;
·set @@global.innodb_file_per_table = ON;
·set global innodb_file_per_table = ON;
设置会话系统变量的值的方法:
·set @@session.pseudo_thread_id = 5;
·set session pseudo_thread_id = 5;
·set @@pseudo_thread_id = 5;
·set pseudo_thread_id = 5;
MySQL中还有一些特殊的全局系统变量(例如log_bin、tmpdir、version、datadir),在MySQL服务实例运行期间它们的值不能动态修改,不能使用“set”命令进行重新设置,这种变量称为静态变量。
数据库管理员可以使用方法一或者方法二重新设置静态变量的值。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。