MySQL 8 那些新来的参数,给那些快被淘汰的MYSQL DBA

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(共2200人左右 1 + 2 + 3 + 4 +5) 新人奖直接分配到5群,另欢迎 OpenGauss 的技术人员加入。

MySQL 8 已经有很长一段时间提供生产服务器,可还有不少企业在使用MYSQL 5.7 设置5.6 等版本的MYSQL 系统,且不少的MYSQL的DBA 对于MYSQL 的知识还停留在MYSQL5.7并不愿意将知识更新到MYSQL8 ,MYSQL知识快速更新的过程中淘汰这样的DBA 是容易的事情。后面这个可能会做一个系列,不断对比MYSQL5.6 5.7 和 MYSQL8.0 之间的差异,今天我们来说说mysql 8 的一些与核心有关在MYSQL8 变动的系统变量和参数。

我们将这些参数根据版本来进行划分,这里我们逐条分析

innodb_temp_tablespaces_dir (8.0.13)

innodb_log_checkpoint_fuzzy_now (8.0.13) 不建议调节

innodb_fsync_threshold (8.0.13)

innodb_parallel_read_threads (8.0.14)

innodb_buffer_pool_in_core_file ( 8.0.14 ) 不建议调节

innodb_spin_wait_pause_multiplier (8.0.16)

innodb_redo_log_archive_dirs (8.0.17)

innodb_idle_flush_pct (8.0.18)

innodb_doublewrite_batch_size (8.0.20)

innodb_doublewrite_dir (8.0.20)

innodb_doublewrite_files (8.0.20)

innodb_doublewrite_pages (8.0.20)

innodb_fsync_threshold (8.0.13)

我们先从这个参数说起,在数据从MySQL到磁盘中是间隔着,操作系统的缓存的,而如果系统有缓存,缓存是多长时间进行数据的刷新是一个问题,默认的情况下参数为0 ,默认的情况下是数据文件完整的在系统缓存中存在后,才能进行数据的刷新到磁盘的工作,而在一些大的数据文件产生的时候,如果能挑战触发的阈值让刷新更频繁的进行,有利于降低IOPS 的瞬时的高度。

这里单位的字节,而且这个值需要在磁盘系统较差的系统中进行调节,调节可以进行多次的调节,找到合适的值,比如100MB 开始,逐步增加。

innodb_temp_tablespaces_dir

这个变量的出现,说明MySQL 开始在对自己临时表产生的位置进行变化,为提高系统的性能在这方面提供了可能性,并且这部分的变化后在8.016 还进行更大的变化,在你设置后,并重启MYSQL 将临时表的表空间设置到你指定的磁盘位置和目录。

innodb_parallel_read_threads

从MySQL 8.014开始,MySQL开始针对之前大家吐槽的查询的效率的问题,进行变动,这个参数就是要进行相关的工作,在查询中对于主键的读取的并行度可以开始调节,这里范围在 1 -256 默认为4 ,在读取主键的时候会有更多的并行读取的,在扫描这些数据的时候,会将其读入到缓冲区页面被保存在LRU列表的尾部,方便在空闲的时候将这些数据进行抛弃。

并且在这个版本中发现一些问题,并在8.017版本对这个部分进行了修整,当读取的线程达到 256 ,以客户端链接线程作为一个评价,当到达这个值,则这个并行度的值会自动失效,读取将还以单线程为准。

innodb_spin_wait_pause_multiplier

在之前MYSQL 有一个innodb_spin_wait_delay来对于自旋锁的轮训之间的最大间隔进行调节的参数,在8.016 这里对于之前的参数的灵活性进行变动,之前没有这个参数 innodb_spin_wait_delay 进行延迟是执行的PAUSE 是写死的,而这个参数给了1-100的选择,也就是之前的参数需要乘以这个参数后,得到具体的自旋锁等待的时间。默认这里是50

innodb_redo_log_archive_dirs

在8.017 的MySQL 开始对于物理数据库的副本进行了改动,怎么快速产生一个MYSQL的副本,而不是在用BINLOG 来进行工作,这是一个MYSQL 不被当成一个数据库业界在数据副本产生时,不作为一个笑柄的开始,所以要针对redo log进行留存,为后续的一些可能性做前期的铺垫。

innodb_idle_flush_pct

在8.018 这个值的出现,说明对于MYSQL来说,系统性能尤其在数据刷新方面的优化还在进行,这个值就是为了在数据库空闲期间控制磁盘刷新的比率的,默认是100,当设置低于100,将会降低数据刷新脏页的百分比,这里不建议不了解的情况下对这个值进行变动。变动会导致突发情况丢失数据的可能性。

接下来在8.020 针对一直吐槽的 dw 进行了一些参数的提出

innodb_doublewrite_batch_size

innodb_doublewrite_dir

innodb_doublewrite_files

innodb_doublewrite_pages

innodb_doublewrite_dir

innodb_doublewrite_files

这两个参数一看就可以看出是针对DW的文件的位置和文件进行配置,提DW文件的灵活性。

而innodb_doublewrite_batch_size 和 innodb_doublewrite_pages 算是一体的,通过对于innodb_doublewrite_pages 参数的状态来监控,发现刷新的页面数量的多少来判断是否有必要对于 innodb_doublewrite_batch_size 进行调整,举例你发现当 innodb_doublewrite_pages 待写的pages 如果数量每次查看都较大,就可以提高 innodb_doublewrite_batchsize 的数量提高双,写机制的效率。这个数值调节在0.256 ,默认为0 提高数值可以刷新的,但需要考虑具体的实际情况,尝试调节,不建议一开始就调节成较大的数值。

相关推荐
AI 嗯啦2 小时前
SQL详细语法教程(七)核心优化
数据库·人工智能·sql
@蓝眼睛2 小时前
mac的m3芯片安装mysql
mysql·macos
ClouGence2 小时前
三步搞定!GaussDB 实时数据入仓
数据库·后端
冰块的旅行2 小时前
MySQL 的时区问题
mysql
舒一笑4 小时前
如何优雅统计知识库文件个数与子集下不同文件夹文件个数
后端·mysql·程序员
鼠鼠我捏,要死了捏4 小时前
生产环境MongoDB分片策略优化与故障排查实战经验分享
数据库·mongodb·分片
KaiwuDB5 小时前
KWDB 分布式架构探究——数据分布与特性
数据库·分布式
笨蛋不要掉眼泪5 小时前
Spring Boot集成腾讯云人脸识别实现智能小区门禁系统
java·数据库·spring boot
Leiwenti6 小时前
MySQL高阶篇-数据库优化
数据结构·数据库·mysql
你的电影很有趣6 小时前
lesson44:Redis 数据库全解析:从数据类型到高级应用
数据库·redis·缓存