可以使用并行提示提高对表的指定分区的查询性能吗?

时间:2016-05-01 10:06:44

标签: oracle performance parallel-processing query-optimization partition

使用并行提示查询指定的分区表时是否有效?

SELECT /*+ PARALLEL(A,5)*/
    A.USER_ID
     , A.RES_TYPE
     , A.RES_ID
     , A.LIMIT_TAG
     , A.FEEPOLICY_INS_ID
     , A.FEEPOLICY_ID
     , TO_NUMBER(TO_CHAR(A.START_DATE, 'YYYYMMDDHH24MISS')) AS START_DATE
     , TO_NUMBER(TO_CHAR(A.END_DATE, 'YYYYMMDDHH24MISS')) AS END_DATE
FROM   TF_B_USER_FREECDR_HASH PARTITION(PAR_TF_B_USER_FREECDR_0) A
ORDER  BY A.USER_ID

以下是解释计划:

picture of the explain plan

1 个答案:

答案 0 :(得分:0)

  

" sql语句可以使用parallel"

来提高性能

是。或没有。或者,实际上,性能可能会恶化。这真的取决于很多因素。

例如,您的服务器有多少处理器(CPU内核)?有多少可供使用?如果您没有可用的CPU,那么使用并行提示没有任何好处;事实上,管理并行执行的开销可能会导致结果变慢。

为什么选择平行度5?除非你可以保证有五个可用的CPU同时运行五个线程,否则当其他线程正在运行时,线程将暂停。两个人的权力更有意义(2,4,8等)。

  

" cpu计数为120"

你可以使用多少。根据实际工作量,您可能无法在需要时获取五个。但是,赔率非常高。

现在,关于并行是否会对您的实际查询产生任何影响,我们很难说清楚。解释计划显示优化器将尝试并行执行,但不会显示您是否从中获益。

显然,在所有条件相同的情况下,将大型工作分成几个流并同时运行它们会导致总耗时减少。事情并不总是这样。因此,尝试使用和不使用并行提示对语句进行基准测试。查询V$PQ_TQSTAT以查看会发生什么。 (您可能需要友好的DBA授予您该视图的权限。)