深入理解mysql-第二章 mysql的系统变量

本文介绍了MySQL中的系统变量和状态变量。系统变量影响服务器行为,如max_connections和default_storage_engine,可全局或会话级别动态调整。通过SHOW VARIABLES命令查看。状态变量展示服务器运行状态,如Threads_connected,不可直接设置,可用于监控。全局和会话作用范围的设定可通过SET命令完成。
摘要由CSDN通过智能技术生成

一、系统变量

 1.1  系统变量简介

  MySQL服务器程序运行过程中会用到许多影响程序行为的变量,它们被称为MySQL系统变量,比如允许同时连入的客户端数量用系统变量max_connections表示,表的默认存储引擎用系统变量default_storage_engine表示,查询缓存的大小用系统变量query_cache_size表示,每个系统变量都有一个默认值,我们可以使用命令行或者配置文件中的选项在启动服务器时改变一些系统变量的值。大多数的系统变量的值也可以在程序运行过程中修改,而无需停止并重新启动它。

 1.2 查看系统变量

   我们使用SHOW VARIABLES查看当前的系统变量的值,通常都会带一个LIKE过滤条件来查看我们需要的系统变量的值(因为系统变量比较多)。

mysql> SHOW VARIABLES LIKE 'default_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)

mysql> SHOW VARIABLES like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.00 sec)

  1.3 系统变量的作用范围

大部分的系统变量都可以通过启动服务器时传送启动选项的方式来进行设置。启动时的系统变量修改主要方式就是第四段落的内容,通过启动命令行附件和配置文件。同时也可以在运行中修改。

  对于大部分系统变量来说,它们的值可以在服务器程序运行过程中进行动态修改而无需停止并重启服务器,不过系统变量有作用范围之分。

  多个客户端程序可以同时连接到一个服务器程序,对于同一个系统变量,不同的客户端可以有不同的设置,这就是变量的作用范围,主要分

  • GLOBAL:全局变量,影响服务器的整体操作。

  • SESSION:会话变量,影响某个客户端连接的操作。(注:SESSION有个别名叫LOCAL

在服务器启动时,会将每个全局变量初始化为其默认值(可以通过命令行或选项文件中指定的选项更改这些默认值),所以通过启动选项设置的系统变量的作用范围都是GLOBAL的,也就是对所有客户端都有效的。 注意并不是所有系统变量都具有GLOBALSESSION的作用范围,比如最大连接数是全局的,也有一些事客户端特有的。

通过客户端程序设置全局系统变量的语法,注意必须要带GLOBAL:

SET [GLOBAL|SESSION] 系统变量名 = 值;
或者
SET [@@(GLOBAL|SESSION).]var_name = XXX;

举例:

语句一: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命令如果不指明作用范围,默认查询的是当前客户端的系统变量。

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

 1.4 启动选项和系统变量的区别

启动选项是在程序启动时我们程序员传递的一些参数,而系统变量是影响服务器程序运行行为的变量,它们之间的关系如下:

  • 大部分的系统变量都可以被当作启动选项传入。

  • 有些系统变量是在程序运行过程中自动生成的,是不可以当作启动选项来设置,比如auto_increment_offsetcharacter_set_client啥的。

  • 有些启动选项也不是系统变量,比如defaults-file

二、状态变量 

 为了让我们更好的了解服务器程序的运行情况,MySQL服务器程序中维护了好多关于程序运行状态的变量,它们被称为状态变量。比方说Threads_connected表示当前有多少客户端与服务器建立了连接,Handler_update表示已经更新了多少行记录等等。由于状态变量是用来显示服务器程序运行状况的,所以它们的值只能由服务器程序自己来设置,我们程序员是不能设置的。与系统变量类似,状态变量也有GLOBALSESSION两个作用范围的,类似的,如果我们不写明作用范围,默认的作用范围是SESSION

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值