对于分布式执行计划,分区可以提高查询性能。如果数据库关系表比较小,则不必要进行分区,如果关系表比较大,则需要根据上层业务需求,审慎选择分区键,以保证大多数查询能够使用分区键进行分区裁剪以减少数据访问量。同时,对于有关联性的表,建议采用关联键作为分区键,采用相同分区方式,使用 table group 的方式将相同分区配置在同样的节点上,以减少跨节点的数据交互。OceanBase 数据库的优化器会自动根据查询和数据的物理分布生成分布式执行计划。

    并行查询(Parallel Execution)是指通过对查询计划的改造,给每一个查询计划增加更多的 CPU 和 IO 处理能力,来提高单个查询的响应时间。并行查询技术可以用于分布式执行计划的执行,也可以用于本地查询计划的执行。

    整体来说,并行查询的总体思路和分布式执行计划有相似之处,将执行计划分解之后,不同于串行执行将整个计划由单个执行线程执行,将执行计划的每个部分由多个执行线程执行,通过一定的调度的方式,实现执行计划的 DFO 之间的并发执行和 DFO 内部的并发执行。在在线交易(OLTP)场景下,也可以适用于批量更新操作,创建索引,维护索引等操作。

    当系统满足以下条件时,并行查询可以有效提升系统处理性能:

    通常在 DSS(Decision Support Systems)系统中,大量分区需要被访问和数据仓库环境下,并行执行能够提升执行响应时间。OLTP 系统通常在批量 DML 操作或者进行 schema 维护操作时能够受益,例如进行 index 的创建等。对于简单的 DML 操作或者分区内查询以及涉及分区数比较小的查询来说,使用并行查询并不能很明显的提高查询响应时间。

    还有需要注意的是,当想要通过并行查询得到最佳的性能表现时,系统的每一个组成部分需要共同的进行配置。因为任何一个部分的性能表现瓶颈都会成为制约整个系统表现的单点。