MySQL 系统变量介绍——全局变量和会话变量

学习笔记 马富天 2020-05-28 16:41:04 52 0

【摘要】好久没有更新文章啦,今天写篇文章记录一下最近学习的知识。本文主要介绍一下有关 MySQL 的系统变量知识,通常我们可以 MySLQ 将系统变量分为全局变量和会话变量。

全局变量是在 MySQL 启动的时候自动对它们进行初始化设置默认值,这些默认值可以通过配置文件 my.ini 来修改。

会话变量则是在每次建立新的连接时,由 MySQL 服务器来初始化,MySQL 会将当前的全局变量复制出一份用来作为会话变量。

二者的区别在于对全局变量的修改会影响到整个 MySQL 服务器,但是对会话变量的修改,只会影响当前连接的会话。

查看所有会话变量:

  1. show session variables;

查看所有全局变量:

  1. show global variables;

当为指定是会话还是全局变量时,则默认是会话变量,即:

  1. show variables; # 查看会话变量

当我们要查找某个系统变量时,可以用 like 来搜索:

  1. mysql> show variables like '%autocommit%';
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | autocommit    | ON    |
  6. +---------------+-------+
  7. 1 row in set

如果我们想要修改系统变量值,可以用 set 命令来设置,需要注意的是:

在 MySQL 的系统变量中,有些变量是允许被修改的,但有些是只读的、不允许修改的。

修改一般方式为:

  1. set session var_name = var_value;
  2. set @@session.var_name = var_value;

例如:

  1. set session autocommit = off; -- 修改会话变量:关闭自动提交
  2. set @@session.autocommit = off;	--	修改会话变量:连接空闲超时最大时间
  3. set session transaction isolation level read committed; -- 修改会话变量:设置事务隔离级别为读取已提交

修改会话变量只会作用于当前会话,不会影响其它连接的会话,并且在当前连接断开后会自动失效。

修改全局变量后会直接作用于 MySQL 服务器,修改时需要 super 权限,修改后其它连接的会话或者建立新的连接会话都会直接生效,但若重启 MySQL 服务器后则会失效。

例如:

初始状态:

已开启两个会话:会话A、会话B

如在会话 A 中设置:

  1. set global autocommit = off;

同时则会在会话 B 中生效,修改之后创建新的会话C,它的 autocommit 都会变成 off:

  1. mysql> show session variables like 'autocommit';
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | autocommit    | OFF   |
  6. +---------------+-------+
  7. 1 row in set (0.00 sec)
  8. mysql> show global variables like 'autocommit';
  9. +---------------+-------+
  10. | Variable_name | Value |
  11. +---------------+-------+
  12. | autocommit    | OFF   |
  13. +---------------+-------+
  14. 1 row in set (0.00 sec)

由此可见新的会话C,它的系统变量是复制一份全局变量得到的。

版权归 马富天个人博客 所有

本文标题:《MySQL 系统变量介绍——全局变量和会话变量》

本文链接地址:http://www.mafutian.com/443.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 python 封装 mysql 自定义类 》 下一篇《 mysql 自定义变量【用户变量、局部变量】 》

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多