前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL参数

MySQL参数

原创
作者头像
COY_fenfei
修改2020-05-06 15:28:50
2.4K0
修改2020-05-06 15:28:50
举报
文章被收录于专栏:COYCOY

MySQL依赖大量的参数来控制SQL的处理执行过程。有自己安装过MySQL的小伙伴,对mysql.cnf文件相比很熟悉。这就是mysql默认的参数配置文件,mysql启动时会优先在一些特定位置寻找并读取该文件,但mysql.cnf未必一定存在。my.cnf不存在时并不会影响MySQL实例的初始化启动,相关参数值会取决于编译MySQL时指定默认值和源代码中指定参数的默认值。

MYSQL的参数从大类上可以分为静态(static)参数和动态(dynamic)参数,区分点在于参数值是否可以在实例的生命周期内修改并生效。本文核心讲解动态参数的查询与设置。

MySQL动态参数根据修改作用域有两个关键词global和session,它们表明该参数的修改是基于当前会话还是整个实例周期。有些动态参数仅允许会话中修改生效,如:autocommit;有些参数修改完后会立即在整个生命周期中生效,如:binlog\_cache\_size;另一些参数需要指定修改的作用域:如read\_buffer\_size。接下来我们看一个实例:

查看read_buffer_size变量的值

查看全局参数值的方式:

`SELECT @@global.read_buffer_size\G`

查看当前session参数值

`SHOW VARIABLES LIKE 'read_buffer_size'`
`SELECT @@session.read_buffer_size\G`
image.png
image.png

接下来我们修改session域的值到512KB,然后新建session,查看参数值。

image.png
image.png
image.png
image.png

在新建的 session窗口中我们查看到read_buffer_size值,发现是修改前的128KB,证实了修改的参数值生效的仅仅是当前session,并不会影响其他session。那么如果我们修改的作用域是global呢?

当前 session.read_buffer_size=512KB,global.read_buffer_size=128KB,我们在当前session修改global参数值到1M

image.png
image.png

由上图我们发现,在global的参数值成功修改后,当前session的值并没有跟随修改。那么对于其他session的参数值是否产生影响呢?我们新建session,查询session.read_buffer_size和global.read_buffer_size

image.png
image.png

发现新建的session中无论是global还是session read_buffer_size均已变成我们修改后的1MB。说明,动态参数在修改全局参数值后,对于修改前已开启的session,不会立即生效,如果要使其跟随生效,需要关闭重新开启session。

接下来我们会思考另一个问题,在当前实例中修改的全局参数值会持久化吗,重启后还会生效吗?那么我们不妨重启mysql实例试试。

MySQL重启

image.png
image.png

创建session并查询参数read_buffer_size的值

image.png
image.png

我们发现,MySQL服务重启后,read_buffer_size参数值并不是我们最终全局设置的1MB而是初始的128KB,说明全局动态参数的设置仅在实例当前生命周期中有效并不会实例化到参数配置文件中。接下来我们通过配置文件修改read_buffer_size=1048576

image.png
image.png

重启mysql并创建session查看read_buffer_size参数值

image.png
image.png

如我们所愿,全局参数值正确的被修改为配置文件中指定的参数值。

总结:MySQL动态参数设置分session作用域和global作用域,session作用域修改后不影响其他已经开启和之后开启的session。global作用域参数值修改后,修改前已经开启的session不会生效,会在新创建的session中生效。global修改的参数值不会被持久化,仅在当前实例生命周期中有效,服务实例重启后会被还原为默认值或者配置文件中指定的参数值。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总结:MySQL动态参数设置分session作用域和global作用域,session作用域修改后不影响其他已经开启和之后开启的session。global作用域参数值修改后,修改前已经开启的session不会生效,会在新创建的session中生效。global修改的参数值不会被持久化,仅在当前实例生命周期中有效,服务实例重启后会被还原为默认值或者配置文件中指定的参数值。
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档