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

备注:测试数据库版本为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.youkuaiyun.com/weixin_30421043/article/details/113285267
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值