MySQL参数和状态查询

0    28    1

👉 本文共约2234个字,系统预计阅读时间或需9分钟。

简介

MySQL的变量分为以下两种:

1)系统变量:配置MySQL服务器的运行环境,可以用show variables查看。

2)状态变量:监控MySQL服务器的运行状态,可以用show status查看。

Mysql参数文件中的参数可以分为2种类型:动态(dynamic)参数和静态参数(staitic)

​ (1)dynamic :可以通过set进行实时修改

​ (2)static,只能在my.cnf里面修改,需要restart生效

动态参数意味着可以在mysql实例运行中进行修改,set global sort_buffer_size=32999999;修改后,别的connection重新进行连接就可以生效了。

生效范围分为:global和session。

静态的说明在整个mysql实例运行期间不得进行修改,就类似一个只读的read only

系统变量

系统变量按其作用域的不同可以分为以下两种:

1)全局(GLOBAL)级:对整个MySQL服务器有效

2)会话(SESSION或LOCAL)级:只影响当前会话

有些变量同时拥有以上两个级别,MySQL将在建立连接时用全局级变量初始化会话级变量,但一旦连接建立之后,全局级变量的改变不会影响到会话级变量。

查看系统变量的值

可以通过show vairables语句查看系统变量的值:

注意:show variables优先显示会话级变量的值,如果这个值不存在,则显示全局级变量的值,当然你也可以加上GLOBAL或SESSION关键字区别:

在写一些存储过程时,可能需要引用系统变量的值,可以使用如下方法:

如果在变量名前没有级别限定符,将优先显示会话级的值。

最后一种查看变量值的方法是从INFORMATION_SCHEMA数据库里的GLOBAL_VARIABLES和SESSION_VARIABLES表获得(在5.7以上需要设置:set global show_compatibility_56=on;)。

设置和修改系统变量的值

在MySQL服务器启动时,有以下两种方法设置系统变量的值:

1)命令行参数,如:mysqld --max_connections=200

2)选项文件(my.cnf)

在MySQL服务器启动后,如果需要修改系统变量的值,可以通过SET语句:

如果在变量名前没有级别限定符,表示修改会话级变量。

注意:和启动时不一样的是,在运行时设置的变量不允许使用后缀字母'K'、'M'等,但可以用表达式来达到相同的效果,如:

MySQL 8 全局变量的修改持久化 set persist

https://dev.mysql.com/doc/refman/8.0/en/nonpersistible-system-variables.html

https://dev.mysql.com/doc/refman/8.0/en/persisted-system-variables.html

在8之前的版本中,对于全局变量的修改,其只会影响其内存值,而不会持久化到配置文件中。数据库重启,又会恢复成修改前的值。从8开始,可通过SET PERSIST命令将全局变量的修改持久化到配置文件中。

在数据库启动时,会首先读取其它配置文件,最后才读取mysqld-auto.cnf文件(默认保存在数据文件目录中)。不建议手动修改该文件,因为其内容是json格式的,其有可能导致数据库在启动过程中因解析错误而失败。如果出现这种情况,可手动删除mysqld-auto.cnf文件或将persisted_globals_load变量设置为off来避免该文件的加载。

对于已经持久化了变量,可通过reset persist命令清除掉,注意,其只是清空mysqld-auto.cnf和performance_schema.persisted_variables中的内容,对于已经修改了的变量的值,不会产生任何影响。

通过表查询

这两个表提供和系统状态相关的信息

从 MySQL 5.7.6开始,这两个表开始被废弃,并将在后续的版本移除,只能在Performance_schema数据库中查询

这个特性通过show_compatibility_56 参数控制,同时控制系统变量和状态变量

MySQL 5.6的时候如下系统变量和状态变量可以使用show命令获取

他们的来源于如下表

MySQL 5.7.6开始后改成了从如下表获取

从该版本开始MySQL引入了show_compatibility_56参数来控制show命令从什么地方获取值

当show_compatibility_56为ON时代表启用了MySQL 5.6的兼容性,这时和MySQL5.6一致

如果show_compatibility_56为OFF,则代表禁用兼容性,这时表的信息通过peformance_schema获取,这时直接查询information_schame会报错

MySQL参数和状态查询

该参数从5.7.8开始默认为OFF

我们可以直接使用show命令来查询状态变量,系统变量同理,这时不必关心show_compatibility_56参数的值

或者使用performance_schema数据库

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

参考链接

https://dev.mysql.com/doc/refman/5.7/en/status-table.html

https://dev.mysql.com/doc/refman/5.7/en/performance-schema-variable-table-migration.html

    头像

    小麦苗

    学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

    您可能还喜欢...

    发表评论

    您的电子邮箱地址不会被公开。

    9 − 6 =

     

    嘿,我是小麦,需要帮助随时找我哦
    • 18509239930
    • 个人微信

    • 麦老师QQ聊天
    • 个人邮箱
    • 点击加入QQ群
    • 个人微店

    • 回到顶部
    返回顶部