暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式数据库学习Note95:OceanBase社区版中,如何调优并行查询?

并行查询(PX)的参数决定了并行查询的速度,主要包括并行度和 EXCHANGE 相关参数 。

并行度参数

并行度相关参数主要决定每个查询并发时的 Worker 个数。

参数名称描述取值范围默认值配置建议
parallel_servers_target当准备排队之前,检查查询要求的并行度和已统计的 Worker 总和是否超过该值。如果超过该值,则查询需要排队,否则查询继续执行。[0, 1800]0(目前会根据 CPU 个数计算得到,以实际大小为准)该参数主要是控制 PX 场景下,当准备进行并行查询时,如果没有足够 Worker 处理该查询,决定是否继续进行还是排队等待。

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

obclient> SHOW VARIABLES LIKE '%paral%';

+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| parallel_servers_target | 4     |
+-------------------------+-------+
1 rows in set 

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 来查看参数的值,如下例所示:

obclient> SHOW PARAMETERS LIKE '%dtl%'\G
*************************** 1. row ***************************
      ZONE: zone1
  SVR_TYPE: observer
    SVR_IP: 10.1.1.1
  SVR_PORT: 2882
      NAME: dtl_buffer_size
 DATA_TYPE: NULL
     VALUE: 64K
      INFO: to be removed
   SECTION: OBSERVER
     SCOPE: CLUSTER
    SOURCE: DEFAULT
EDIT_LEVEL: DYNAMIC_EFFECTIVE
1 row in set 
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论