详细讲解mysql全局变量与局部变量


本文摘自PHP中文网,作者V,侵删。

通常在服务器启动时,会将每个全局变量初始化为其默认值(我们可以通过命令行或选项文件中指定的选项更改这些默认值),然后服务器还为每个连接的客户端维护一组会话变量,客户端的会话变量在连接时使用相应全局变量的当前值初始化。

举例说明如下:

在服务器启动时会初始化一个名为default_storage_engine,作用范围为GLOBAL的系统变量,之后每当有一个客户端连接到该服务器时,服务器都会单独为该客户端分配一个名为default_storage_engine,作用范围为SESSION的系统变量,该作用范围为SESSION的系统变量值按照当前作用范围为GLOBAL的同名系统变量值进行初始化。

(免费学习视频教程推荐:mysql视频教程)

很显然,通过启动选项设置的系统变量的作用范围都是GLOBAL的,也就是对所有客户端都有效的,因为在系统启动的时候还没有客户端程序连接进来呢。了解了系统变量的GLOBAL和SESSION作用范围之后,我们再看一下在服务器程序运行期间通过客户端程序设置系统变量的语法:

1

SET [GLOBAL|SESSION] 系统变量名 = 值;

或者如下写法:

1

SET [@@(GLOBAL|SESSION).]var_name = XXX;

比如我们想在服务器运行过程中把作用范围为GLOBAL的系统变量default_storage_engine的值修改为MyISAM,也就是想让之后新连接到服务器的客户端都用MyISAM作为默认的存储引擎,那我们可以选择下边两条语句中的任意一条来进行设置:

语句一:

1

SET GLOBAL default_storage_engine = MyISAM;

语句二:

1

SET @@GLOBAL.default_storage_engine = MyISAM;

如果只想对本客户端生效,也可以选择下边三条语句中的任意一条来进行设置:

语句一:

1

SET SESSION default_storage_engine = MyISAM;

语句二:

1

SET @@SESSION.default_storage_engine = MyISAM;

语句三:

1

SET default_storage_engine = MyISAM;

从上边的语句三也可以看出,如果在设置系统变量的语句中省略了作用范围,默认的作用范围就是SESSION。也就是说SET 系统变量名 = 值和SET SESSION 系统变量名 = 值是等价的。

查看不同作用范围的系统变量

既然系统变量有作用范围之分,那我们的SHOW VARIABLES语句查看的是什么作用范围的系统变量呢?

答:默认查看的是SESSION作用范围的系统变量。

当然我们也可以在查看系统变量的语句上加上要查看哪个作用范围的系统变量,就像这样:

1

SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];

相关文章教程推荐:mysql教程

以上就是详细讲解mysql全局变量与局部变量的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

怎么查看mysql的默认密码是多少

mysql explain的作用是什么?

c语言连接mysql数据库的实现方法

mysql常用命令 详细整理版

mysql中min()和least()的区别

mysql默认事务隔离级别是什么?

redis如何与mysql保持一致性

如何批量修改mysql表字符集

mysql数据库可视化工具sqlyogent怎么用?

分享一些mysql数据库的优化技巧

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...