支持的场景和受限场景
并行查询支持的场景
|
功能场景 |
说明 |
|---|---|
|
扫描 |
支持全表扫描、索引扫描、索引范围扫描、索引逆序扫描、索引点查询、索引下推等。 |
|
查询 |
支持单表查询、多表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。 |
并行查询受限场景
|
受限场景 |
说明 |
|---|---|
|
语句 |
|
|
索引 |
|
|
函数 |
|
并行查询与串行执行不兼容场景说明
- 错误或者告警提示次数可能会增多
对于在串行执行中出现错误/告警提示的查询,在并行执行情况下,每个工作线程可能都会提示错误/告警,导致总体错误/告警提示数会增多。

- 精度问题
并行执行的执行过程中,当select的内容是函数类型时,会比非并行执行多出中间结果的存储过程,可能会导致浮点部分精度差别,导致最终结果有细微的差别。

- 截断问题
并行执行的执行过程中,当select的内容是函数类型时,会比非并行执行多出中间结果的存储过程。在这个过程中,需要缓存函数的计算结果,可能出现截断(一般是类型转换导致的,例如浮点数类型转为字符串等), 导致最终结果与串行结果有差别。
- 结果集顺序差别
因为是多个工作线程执行查询,返回的结果集可能与非并行执行顺序不一致。在具有LIMIT查询的情况下,更容易出现与串行结果顺序不同的现象。对于不可见字符,当MySQL判断多个不可见字符相等时,可能会出现结果集顺序不同,或者group by字段不同的现象。

- union all结果集差别
union all会忽略其中的排序算子,并行执行下返回的结果集顺序可能与非并行不一致。在有limit查询的情况下,会出现结果集不同的现象。