在8.0版本中,MySQL添加了并行查询特性,在其一贯高性能的查询特性上又一定程度的提升了查询效率。通过设置参数innodb_parallel_read_threads来改变并发线程数,就能开始并行扫描功能,默认这个值为4。
mysql>
set local innodb_parallel_read_threads=1;
Query OK, 0 rows affected (0.00 sec)
mysql> select count(*) from guitars;
+-----------+
| count(*) |
+-----------+
| 159927400 |
+-----------+
1 row in set (2 min 13.53 sec)
mysql>
set local innodb_parallel_read_threads=DEFAULT; ---设置成了默认值4
Query OK, 0 rows affected (0.00 sec)
mysql> select count(*) from guitars;
+-----------+
| count(*) |
+-----------+
| 159927400 |
+-----------+
1 row in set (29.65 sec)
mysql>
set local innodb_parallel_read_threads=32;
Query OK, 0 rows affected (0.00 sec)
mysql>
select count(*) from guitars;
+-----------+
| count(*) |
+-----------+
| 159927400 |
+-----------+
1 row in set (4.95 sec)
后面多轮的测试,发现在参数设置成64的时候,反而比前一级别32的要慢一些。因此,在进行并行测试的时候需要注意以下几点:
1、上线前需要进行多轮测试,以寻求较好的并行效果,找到最佳实践参数值
2、对于zaihuihuanei满足并行查询条件的语句,可考虑会话级别的参数设置,在会话内提升参数,会话后恢复默认(8.0版本)
3、并行数值设置建议不高于CPU数量
4、关注服务器高峰期CPU性能
5、目前并行查询满足的条件:
a.无锁查询
b.聚集索引
c.insert into table a ... select
d.需要参数设置为非0
通过这一次的测试,认识到MySQL作为最流行的数据库的快速发展能力,并发能力在不断的发展和适应更多的场景。相信MySQL在不久的将来,会带来更多令人惊喜的功能特性。
阅读(6073) | 评论(0) | 转发(0) |