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

2024-04-15 15:21:36 浏览数 (1)

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 提高数值可以刷新的,但需要考虑具体的实际情况,尝试调节,不建议一开始就调节成较大的数值。

0 人点赞