GreatSQL社区

搜索

DB架构师:曾凡坤

MySQL8.0.4版本并行参数

DB架构师:曾凡坤 已有 60 次阅读2025-1-25 18:38 |个人分类:MYSQL|系统分类:运维实战| MySQL

并行能力是指在处理多个任务或操作时,能够同时执行多个操作的能力。在MySQL中,并行能力可以提高数据库系统的处理能力和性能,从而更好地满足用户的需求。当然也需要合理地设计和配置并行参数,可以充分发挥并行性的优势,提高系统的吞吐量和响应速度。在MySQL8 中新增的并行参数有innodb_ddl_threads,innodb_parallel_read_threads,innodb_log_writer_threads,在一些场景中都能提到很好的提升效果。

MySQL8.0.40版本并行参数:

<code class="language-sql">mysql> show variables like '%threads';
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| innodb_ddl_threads       | 4        |
| innodb_log_writer_threads    | ON    |
| innodb_parallel_read_threads | 4     |

下面介绍MySQL8.0新增的并行参数。

innodb_log_writer_threads

innodb_log_writer_threads用于将Redo日志记录从日志缓冲区写入系统缓冲区,并将系统缓冲区刷新为Redo日志文件。
此参数出现缘由,应该跟Redo日志文件大小参数innodb_redo_log_capacity有关。

在MySQL8.0版本中InnoDB引擎把Redo日志切分位32个相同大小的日志文件,每个文件等于1/32*InnoDB_redo_log_capacity的小。

因此,多个文件下,可以很好使使用并行能力提高Redo的处理能力。

innodb_log_writer_threads的默认值4,可以提高高并发系统的性能,但对于低并发系统,资源配置低的系统,禁用此参数可以提供更好的性能。

innodb_parallel_read_threads

在MySQL 8.0.14 引入了innodb_parallel_read_threads参数来控制扫描“聚簇索引”的并行线程。

此功能不适用于二级索引扫描。并行读取线程可以提高CHECK TABLE的性能。InnoDB在CHECK TABLE操作期间读取聚集索引两次。

第二次读取可以并行执行。MySQL 8.0.17支持分区的并行扫描。

此参数必须设置为大于1的值,才能进行并行读取。普遍新读取的数据被插入缓冲区的距离LRU列表尾部3/8(innodb_old_blocks_pct)的位置。

但并行读取的数据保存到缓冲池中的页面的缓冲池LRU列表的末尾,以便在需要空闲缓冲池页面时可以快速丢弃。

在一些计划场景下,新旧数据交替是非常频繁的,对缓冲区冲击不小。所以选择合适场景。

从MySQL 8.0.17开始,并行读取线程的最大数量(256)是所有客户端连接的线程总数。如果达到线程限制,连接将退回到使用单个线程。

同时默认值是通过系统上可用逻辑处理器的数量除以8来计算的,最小默认值为4。

最好应该遵守 =< CPU/8。

innodb_ddl_threads

MySQL 8.0.27 引入了 innodb_ddl_threads 变量来控制用于创建二级索引时的并行线程数量,此参数一般和一并引入的 innodb_ddl_buffer_size 一起使用,innodb_ddl_buffer_size 用于指定进行并行DDL操作时能够使用的buffer大小,buffer是在所有的DDL并行线程中平均分配的,所以一般如果调大innodb_ddl_threads参数,也需要调大 innodb_ddl_buffer_size的大小。

下面是网上当调整innodb_ddl_threads,innodb_ddl_buffer_size ,innodb_parallel_read_threads 性能测试。仅参考:


评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2025-2-5 16:45 , Processed in 0.015886 second(s), 10 queries , Redis On.
返回顶部