并行度相关参数主要决定每个 query 并发时的 worker 个数。

    参数用于控制最大的并发度,parallel_servers_target 参数用来决策 query 在并行查询时是否排队,两者需要协同工作。如果只使用 parallel_max_servers 设置最大并行度,当查询过多时,会导致所有 worker 都被调度起来,导致 CPU 等资源紧张,查询性能下降。在 CPU 等资源有限的情况下,使用 parallel_servers_target 控制 query 进行排队可以提高整个并发的吞吐量。

    可以通过 SHOW VARIABLES 来查看这些参数的值,如下例所示:

    注意

    参数不需要设置,对 PX 框架无效。

    EXCHANGE(Shuffle)参数

    EXCHANGE(Shuffle)参数主要用来控制在每个 DFO 之间进行数据传输时的参数控制,也就是数据进行 shuffle 时的内存控制。Oceanbase 数据库将数据传输封装成了叫做 DTL(Data Transfer layer)的模块。

    描述

    取值范围

    默认值

    配置建议

    dtl_buffer_size

    控制 EXCHANGE 算子之间(即transmit 和 receive 之间)发送数据时,每次发送数据的 buffer 的大小。即当数据达到了该值上限才进行发送,减少每行传输的代价。

    [0, 1800]

    10(目前会根据 CPU 个数计算得到,以实际大小为准)

    PX 场景下,EXCHANGE 之间发送数据依赖于该参数大小,一般不需要调整该参数,如果是为了减少发送数据次数等可以尝试进行修改,一般不建议修改该值大小。

    可以通过 SHOW PARAMETERS 来查看参数的值,如下例所示:

    1. obclient>SHOW PARAMETERS LIKE '%dtl%';
    2. +-------+----------+----------------+----------+-----------------+-----------+-------+---------------+----------+---------+---------+-------------------+
    3. | zone1 | observer | 100.81.152.114 | 36500 | dtl_buffer_size | NULL | 64K | to be removed | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
    4. +-------+----------+----------------+----------+-----------------+-----------+-------+---------------+----------+---------+---------+-------------------+