在Oracle中,PARALLEL被广泛使用。PARALLEL,PARALLEL(8),PARALLEL(a,8)有什么区别?

tou*_*dra 3 oracle parallel-processing query-optimization oracle11g

在Oracle中,PARALLEL被广泛使用。提示PARALLEL,PARALLEL(8)和PARALLEL(a,8)有什么区别。如何选择查询的最佳提示?

SELECT /*+ PARALLEL */  * FROM BIG_TABLE_A a, BIG_TABLE_B b WHERE a.KEY=b.KEY;
SELECT /*+ PARALLEL(8) */ * FROM BIG_TABLE_A a, BIG_TABLE_B b WHERE a.KEY=b.KEY;
SELECT /*+ PARALLEL(a,8) PARALLEL(b,8) */ * FROM BIG_TABLE_A a, BIG_TABLE_B b WHERE a.KEY=b.KEY;
Run Code Online (Sandbox Code Playgroud)

tou*_*dra 5

参考:https : //docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements006.htm#BABHFDDH

对于语句级PARALLEL提示:

并行:语句始终并行运行,并且数据库计算并行度,可以为2或更大。

PARALLEL(DEFAULT):优化程序计算的并行度等于所有参与实例上可用的CPU数量乘以PARALLEL_THREADS_PER_CPU初始化参数的值。

并行(自动):数据库计算并行度,可以为1或更大。如果计算出的并行度为1,则该语句按顺序运行。

并行(手动):强制优化器使用语句中对象的并行设置。

PARALLEL(整数):优化器使用整数指定的并行度。