mysql 系统变量

前言

简单介绍一下mysql的系统变量

正文

当我们之间查看mysql的系统变量的时候呢?

我们使用show variables,这样我们就可以查看到系统变量。

但是这样显然是没有意义的。

可以看到很多很多的系统变量,如果想查具体的,那么就是:

SHOW VARIABLES LIKE 'default_storage_engine'

又比如查看最大连接数:

SHOW VARIABLES like 'max_connections'; 

当然这些我们肯定是记不住的,那么这个时候我们就用ai问就行了。

系统变量中又分为几类:

启动项:

例如:default_storage_engine

那么这种就必须在启动的时候进行修改设置。

mysqld --default-storage-engine=MyISAM --max-connections=10

还有可以写在配置文件之中:

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

那么还有运行时配置。

这一类配置在运行时修改就生效了。

这一类运行时配置又分为两类:

  1. 客户端级(session 级)

  2. 系统级(global 级)

比如说我们创建表,没有指定使用什么数据引擎,那么这个时候就会用session的配置,如果session没有配置,那么就会使用global级。

有一些系统变量并不是针对单个客户端的,比如允许同时连接到服务器的客户端数量 max_connections ,查
询缓存的大小 query_cache_size ,这些公有的系统变量让某个客户端私有显然不合适。

那么这里就有一个问题,当我们客户端连接了,如果我们全局设置了default-storage-engine=MyISAM,那么是否对该连接生效呢?

答案是不生效,运行逻辑是这样的,当服务器启动的时候,那么会维护一个全局变量表,如果创建一个新连接的时候,那么会维护一个会话变量表,所以全局修改的时候并不会去影响已经连接的会话。

设置的时候可以这样设置:

set [global|session] 系统变量名 = 值

set [global|session].系统变量名 = 值

如果设置会话级别,那么可以省略:

set 系统变量名 = 值

那么我们如何查看session 系统变量和 global 系统变量呢? 我们到现在为止知道了一个叫做 show variables like 'xx' 这样的。

那么如何在这上面加一些条件方便我们查看session 或者global呢。

直接 show [session|global] variables like 'xx'

并不是所有系统变量都具有 GLOBAL 和 SESSION 的作用范围。
有一些系统变量只具有 GLOBAL 作用范围,比方说 max_connections ,表示服务器程序支持同时最多有
多少个客户端程序进行连接。
有一些系统变量只具有 SESSION 作用范围,比如 insert_id ,表示在对某个包含 AUTO_INCREMENT 列的
表进行插入时,该列初始的值。
有一些系统变量的值既具有 GLOBAL 作用范围,也具有 SESSION 作用范围,比如我们前边用到的
default_storage_engine ,而且其实大部分的系统变量都是这样的

有些系统变量是只读的,并不能设置值。
比方说 version ,表示当前 MySQL 的版本,我们客户端是不能设置它的值的,只能在 SHOW VARIABLES 语句
里查看。

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

启动选项 是在程序启动时我们程序员传递的一些参数,而 系统变量 是影响服务器程序运行行为的变量,它们之间的关系如下:
大部分的系统变量都可以被当作启动选项传入。
有些系统变量是在程序运行过程中自动生成的,是不可以当作启动选项来设置,比如auto_increment_offset 、 character_set_client 啥的。
有些启动选项也不是系统变量,比如 defaults-file 。

说白了,就是启动选项可以设置一些系统变量,有些系统变量只有启动的时候才能生效。

状态变量

有一些运行状态是不能修改的,也就是运行过程中的状态数据。

同样的,也分为session 状态和global 状态。

系统变量大体如此吧,后续补充其他滴

posted @   敖毛毛  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
点击右上角即可分享
微信分享提示