暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL优化系列10-MySQL的并行介绍

原创 只是甲 2021-07-06
2713

备注:测试数据库版本为MySQL 8.0

一.MySQL InnoDB并行查询介绍

MySQL经过多年的发展已然成为最流行的数据库,广泛用于互联网行业,并逐步向各个传统行业渗透。之所以流行,一方面是其优秀的高并发事务处理的能力,另一方面也得益于MySQL丰富的生态。MySQL在处理OLTP场景下的短查询效果很好,但对于复杂大查询则能力有限。最直接一点就是,对于一个SQL语句,MySQL最多只能使用一个CPU核来处理,在这种场景下无法发挥主机CPU多核的能力。MySQL没有停滞不前,一直在发展,新推出的8.0.14版本第一次引入了并行查询特性,使得check table和select count(*)类型的语句性能成倍提升。虽然目前使用场景还比较有限,但后续的发展值得期待。

InnoDB并行是通过设置参数innodb_parallel_read_threads来控制的。

官网innodb_parallel_read_threads参数的介绍:
image.png

二.MySQL 并行查询案例

因为我本地测试环境cpu只有4个,所以我分别测试1,2,4三个值。

测试记录:

mysql> set local innodb_parallel_read_threads = 1; Query OK, 0 rows affected (0.01 sec) mysql> select count(*) from fact_sale; +-----------+ | count(*) | +-----------+ | 767830001 | +-----------+ 1 row in set (2 min 20.05 sec) mysql> set local innodb_parallel_read_threads = 2; Query OK, 0 rows affected (0.01 sec) mysql> select count(*) from fact_sale; +-----------+ | count(*) | +-----------+ | 767830001 | +-----------+ 1 row in set (1 min 33.54 sec) mysql> set local innodb_parallel_read_threads = 4; Query OK, 0 rows affected (0.00 sec) mysql> select count(*) from fact_sale; +-----------+ | count(*) | +-----------+ | 767830001 | +-----------+ 1 row in set (1 min 2.12 sec)

参考:

  1. https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_parallel_read_threads
  2. https://blog.csdn.net/weixin_30421043/article/details/113285267
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论