系统变量
系统变量简介
Mysql 服务器程序运行过程中会用到许多影响程序行为的变量,就是Mysql系统变量 比如允许同时连入的客户端 数量 max_connections 表示,表的默认存储引擎用系统变量 default_storage_engine 表示,查询缓存的大小用系统变量 query_cache_size 表示,大多数的系统变量的值也可以在程序运行的过程中修改,不需要重新启动服务
查看系统变量show variables like 变量名(可模糊匹配)
比如:
设置系统变量通过启动选项设置
在上一篇说过的方式mysqld --default-storage-engine=MyISAM --max-connections=10[server]default-storage-engine=MyISAMmax-connections=10[mysqld]default-storage-engine=InnoDBmax-connections=10
系统变量的作用域SESSSION : 会话变量,影响单个客户端
GLOBAL : 全局变量,影响服务器
在服务器启动时,会将每个全局变量初始化为其默认值(可以通过命令行或者配置文件中指定的选项更改默认值)。服务器会给每个连接的客户端维护一些会话变量,客户端的会话变量会在连接时使用相应全局变量的当前值初始化。
解释: 意思就是默认的 default_storage_engine GLOBAL是InnoDB ,当客户端程序连接进来的时候 mysql -u root -pxxxx 服务器会单独为该客户端分配一个名为 default_storage_engine,作用范围为 SESSION的系统变量,只对当前连接有效 默认值和 GLOBAL一样 都是InnoDB
语法set [GLOBAL|SESSION] 系统变量名=value#设置默认存储引擎为MyISAM(global)set global default_storage_engine=MyISAM#设置默认存储引擎为MyISAM(session)set default_storage_engine=MyISAM
查看不同作用范围的系统变量show [GLOBAL|SESSION] variable like value#查看global存储引擎为MyISAM(global)show global variables like 'default_storage_engine'#设置默认存储引擎为MyISAM(session)show variables like 'default_storage_engine'如果某个客户端改变了系统变量 GLOBAL 作用范围值,不会影响以及连接客户端的SEESION的值,智慧影响后续连入客户端的SESSION的值有一些系统变量只具有 GLOBAL作用范围,比如 max_connetions有一些系统变量只具有 SESSION作用范围,比如 insert_id ,表示自增的初始化值。有些系统变量是只读,并不能设置值 version
启动选项和系统变量的区别
启动选项是程序启动时可以传递的参数,而系统变量是影响服务器程序运行行为的变量。大部分系统变量都可以被当做启动选项传入。
有些系统变量是程序运行过程中自动生成的,是不可以当做启动选项来设置 auto_increment_offset、character_set_client
有些启动选项也不是系统变量 比如 defaults-file
状态变量
状态变量是为了我们可以了解服务器的运行情况。比如 Threads_connected 表示当前有多个客户端与服务器建立了连接, Handler_update表示已经更新了多少行记录。他们的值只可以服务器程序自己设定,我们无法修改。但是也有GLOBAL 和 SESSIONshow [GLOBAL|SESSION] status [like name]