并行查询简介
什么是并行查询
云数据库 TaurusDB支持了并行执行的查询方式,用以降低分析型查询场景的处理时间,满足企业级应用对查询低时延的要求。
并行查询的基本实现原理是将查询任务进行切分并分发到多个CPU核上进行计算,充分利用CPU的多核计算资源来缩短查询时间。并行查询的性能提升倍数理论上与CPU的核数正相关,也就是说并行度越高能够使用的CPU核数就越多,性能提升的倍数也就越高。
下图是使用CPU多核资源并行计算一个表的count(*)过程的基本原理:表数据进行切块后分发给多个核进行并行计算,每个核计算部分数据得到一个中间count(*)结果,并在最后阶段将所有中间结果进行聚合得到最终结果。具体如下:

应用场景
并行查询适用于大部分SELECT语句,例如大表查询、多表连接查询、计算量较大的查询。对于非常短的查询,效果不太显著。
支持的场景和受限场景
功能场景 | 说明 |
|---|---|
扫描 | 支持全表扫描、索引扫描、索引范围扫描、索引逆序扫描、索引点查询、索引下推等。 |
查询 | 支持单表查询、多表JOIN、视图VIEW、子查询,部分CTE查询、非分区表查询、分区表单分区查询、UNION/UNION ALL查询等。 |
JOIN | 支持BNL JOIN、BKA JOIN、HASH JOIN、NESTED LOOP JOIN、SEMI JOIN、ANTI JOIN、OUTER JOIN等。 |
子查询 | 支持条件子查询、SCALAR子查询、部分关联子查询、非关联子查询、DERIVED TABLE等。 |
数据类型 | 支持整型数据、字符型数据、浮点型数据、时间型数据等。 |
表达式运算 | 支持算术表达式计算(+、-、*、%、/、|、&),条件表达式运算(<、<=、>、>=、<>、BETWEEN/AND、IN等)。 |
逻辑运算 | 支持OR、AND、NOT等。 |
一般函数 | 支持字符函数、整型函数、时间函数等。 |
聚合函数 | 支持COUNT/SUM/AVG/MIN/MAX等。 注意: 对于含有COUNT聚合函数的SQL语句使用了InnoDB并行查询场景下,如果该SQL语句需要使用PQ,必须将“innodb_parallel_select_count”设置为off。 |
排序/分组/分页/过滤 | 支持排序ORDER BY、分组GROUP BY/DISTINCT、分页LIMIT/OFFSET、过滤WHERE/HAVING、列投影等。 |
EXPLAIN | 包括传统EXPLAIN,以及MySQL 8.0新引入的EXPLAIN FORMAT=TREE、EXPLAIN ANALYZE、EXPLAIN FORMAT=JSON,其中2.0.60.241200版本开始支持EXPLAIN ANALYZE。 |
受限场景 | 说明 |
|---|---|
语句 |
|
索引 |
|
函数 |
|




