Mysql系列(二)—— 系统变量与状态变量

系统变量

什么是系统变量

系统变量,就是Mysql针对本身程序运行的一些参数配置。例如经过系统变量咱们能够指定诸如容许同时连入的客户端数量、客户端和服务器通讯方式、表的默认存储引擎、查询缓存的大小等设置项。mysql

系统变量的分类

  • GLOBAL:全局变量,影响服务器的总体操做。
  • SESSION:会话变量,影响某个客户端链接的操做。(注:SESSION有个别名叫LOCAL)

注:程序员

  1. 在服务器启动时,会将每一个全局变量初始化为其默认值(能够经过命令行或选项文件中指定的选项更改这些默认值)。而后服务器还为每一个链接的客户端维护一组会话变量,客户端的会话变量在链接时使用相应全局变量的当前值初始化。
  2. 并非全部系统变量都具备GLOBAL和SESSION的做用范围。有一些系统变量只具备GLOBAL做用范围,比方说max_connections,表示服务器程序支持同时最多有多少个客户端程序进行链接。有一些系统变量只具备SESSION做用范围,好比insert_id,表示在对某个包含AUTO_INCREMENT列的表进行插入时,该列初始的值。有一些系统变量的值既具备GLOBAL做用范围,也具备SESSION做用范围,好比咱们default_storage_engine(存储引擎),并且其实大部分的系统变量都是这样的。

如何查看系统变量

命令:SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式](不写GLOBAL或SESSION等同于SESSION);sql

如何设置系统变量

  • 经过启动选项设置,如命令:mysqld --default-storage-engine=MyISAM --max-connections=10,就是配置默认存储引擎为MyISAM,最大链接数为10。

注:在类Unix系统中,启动脚本有mysqld、mysqld_safe、mysql.server,其中mysqld表明直接启动mysql服务器程序,mysqld_safe会在此基础上启动一个监控进程,它会将服务器程序的出错信息和其余诊断信息重定向到某个文件中,产生出错日志,mysql.server也能够启动Mysql,使用命令mysql.server start,效果跟mysqld_safe同样,mysqld_multi是用于单机多个mysql服务端进程的启动,中止脚本。缓存

每一个MySQL程序都有许多不一样的选项。例如,使用mysql --help能够看到mysql程序支持的启动选项,mysqld_safe --help能够看到mysqld_safe程序支持的启动选项。查看mysqld支持的启动选项有些特别,须要使用mysqld --verbose --help。服务器

  • 在my.cnf配置文件中添加启动选项

配置文件形如:命令行

[server]
(具体的启动选项...)

[mysqld]
(具体的启动选项...)

[mysqld_safe]
(具体的启动选项...)

[client]
(具体的启动选项...)

[mysql]
(具体的启动选项...)

[mysqladmin]
(具体的启动选项...)

像这个配置文件里就定义了许多个组,组名分别是server、mysqld、mysqld_safe、client、mysql、mysqladmin。每一个组下边能够定义若干个启动选项。日志

如在server组下面配置:code

[server]
default-storage-engine=MyISAM
max-connections=10

表示默认存储引擎为MyISAM,最大链接数为10。server

  • 服务器程序运行过程当中设置

命令: SET [GLOBAL|SESSION] 系统变量名 = 值 或 SET [@@(GLOBAL|SESSION).]系统变量名 = 值(不写GLOBAL或SESSION等同于SESSION);进程

例如:

语句一:SET GLOBAL default_storage_engine = MyISAM;

语句二:SET @@GLOBAL.default_storage_engine = MyISAM;

注:若是某个客户端改变了某个系统变量在GLOBAL做用范围的值,并不会影响该系统变量在当前已经链接的客户端做用范围为SESSION的值,只会影响后续连入的客户端在做用范围为SESSION的值。

2、状态变量

什么是状态变量

MySQL服务器程序中维护了好多关于程序运行状态的变量,它们被称为状态变量,因为状态变量是用来显示服务器程序运行情况的,因此它们的值只能由服务器程序本身来设置,咱们程序员是不能设置的。与系统变量相似,状态变量也有GLOBAL和SESSION两个做用范围的。比方说Threads_connected表示当前有多少客户端与服务器创建了链接,Handler_update表示已经更新了多少行记录。

查看状态变量命令

SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式](不写GLOBAL或SESSION等同于SESSION;

相关文章
相关标签/搜索