ob执行计划

EXPLAIN SELECT /+ parallel(8) use_nl(pt,np)/ * FROM p_tb pt JOIN np_tb np ON pt.c1=np.c1 and np.c2=5; 输出中的


EXPLAIN EXTENDED SELECT /+ parallel(8) use_nl(pt,np)/ * FROM p_tb pt JOIN np_tb np ON pt.c1=np.c1 and np.c2=5;

dop 和parallel 都表示并行度,这两个值有什么区别。请教大佬给解释下。

1 个赞

@论坛小助手

2 个赞

在 OceanBase 的执行计划中,‘dop’ 和 ‘parallel’ 都与并行度有关,但它们的含义和使用场合略有不同:

  1. dop (Degree of Parallelism):

    • 这个值出现在执行计划的每一行中,表示当前操作符在执行时的实际并行度。
    • 例如,在 EXPLAIN EXTENDED 的输出中,dop=8 表示当前操作符(如 TABLE FULL SCAN)在执行时使用了 8 个并行线程。
    • 这个值是由优化器根据查询的代价、资源限制等因素动态决定的。
  2. parallel:

    • 这个值通常出现在 EXPLAIN 的输出中,表示整个查询的并行度设置。
    • 例如,在 EXPLAIN SELECT /+ parallel(8) use_nl(pt,np)/ * FROM p_tb pt JOIN np_tb np ON pt.c1=np.c1 and np.c2=5; 中,parallel(8) 指定了整个查询的并行度为 8。
    • 这个值是通过 parallel 提示(Hint)设置的,用于指示优化器在整个查询中使用指定的并行度。

总结:

  • dop 是实际执行时的操作符并行度,由优化器动态决定。
  • parallel 是查询级别的并行度设置,通过 Hint 显式指定。

在你的例子中,parallel(8) 设置了整个查询的并行度为 8,而 dop=8 表示某些操作符(如 TABLE FULL SCAN)在执行时确实使用了 8 个并行线程。

具体信息可参考以下文档:

  1. 阅读和管理 OceanBase 数据库 SQL 执行计划
3 个赞

收到,明白了,大佬解释的非常到位。 :+1: :+1: :+1:

2 个赞

学习一下