细致解说mysql全局变量与部分变量
平常在效劳器启动时,会将每个全局变量初始化为其默许值(我们可以通过命令行或选项文件中指定的选项更换这些默许值),然后效劳器还为每个连接的客户端保护一组会话变量,客户端的会话变量在连接时使用响应全局变量的当前值初始化。
举例说明如下:
在效劳器启动时会初始化一个名为default_storage_engine
,作用范畴为GLOBAL的系统变量,之后每当有一个客户端连接到该效劳器时,效劳器都会独自为该客户端分配一个名为default_storage_engine,作用范畴为SESSION的系统变量,该作用范畴为SESSION的系统变量值依照当前作用范畴为GLOBAL的同名系统变量值停止初始化。
(免费学习视频教程引荐:mysql视频教程)
很明显,通过启动选项设定的系统变量的作用范畴都是GLOBAL的,也就是对所有客户端都有效的,由于在系统启动的时候还没有客户端程序连接进来呢。理解了系统变量的GLOBAL和SESSION作用范畴之后,我们再看一下在效劳器程序运转期间通过客户端程序设定系统变量的语法:
SET [GLOBAL|SESSION] 系统变量名 = 值;
或者如下写法:
SET [@@(GLOBAL|SESSION).]var_name = XXX;
比方我们想在效劳器运转历程中把作用范畴为GLOBAL的系统变量default_storage_engine的值修改为MyISAM,也就是想让之后新连接到效劳器的客户端都用MyISAM作为默许的储备引擎,那我们可以选中下边两条语句中的任意一条来停止设定:
语句一:
SET GLOBAL default_storage_engine = MyISAM;
语句二:
SET @@GLOBAL.default_storage_engine = MyISAM;
假如只想对本客户端生效,也可以选中下边三条语句中的任意一条来停止设定:
语句一:
SET SESSION default_storage_engine = MyISAM;
语句二:
SET @@SESSION.default_storage_engine = MyISAM;
语句三:
SET default_storage_engine = MyISAM;
从上边的语句三也可以看出,假如在设定系统变量的语句中省略了作用范畴,默许的作用范畴就是SESSION。也就是说SET 系统变量名 = 值和SET SESSION 系统变量名 = 值是等价的。
查看不一样作用范畴的系统变量
既然系统变量有作用范畴之分,那我们的SHOW VARIABLES语句查看的是啥作用范畴的系统变量呢?
答:默许查看的是SESSION作用范畴的系统变量。
当然我们也可以在查看系统变量的语句上加上要查看哪个作用范畴的系统变量,就像这样:
SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
相关文章教程引荐:mysql教程
以上就是具体讲解mysql全局变量与部分变量的具体内容,更多请关注百分百源码网其它相关文章!