大_鹏
#1
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 个赞
论坛小助手
#4
在 OceanBase 的执行计划中,‘dop’ 和 ‘parallel’ 都与并行度有关,但它们的含义和使用场合略有不同:
-
dop (Degree of Parallelism):
- 这个值出现在执行计划的每一行中,表示当前操作符在执行时的实际并行度。
- 例如,在
EXPLAIN EXTENDED 的输出中,dop=8 表示当前操作符(如 TABLE FULL SCAN)在执行时使用了 8 个并行线程。
- 这个值是由优化器根据查询的代价、资源限制等因素动态决定的。
-
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 个并行线程。
具体信息可参考以下文档:
- 阅读和管理 OceanBase 数据库 SQL 执行计划
3 个赞