使用并行提示查询指定的分区表时是否有效?
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
以下是解释计划:
答案 0 :(得分:0)
" sql语句可以使用parallel"
来提高性能
是。或没有。或者,实际上,性能可能会恶化。这真的取决于很多因素。
例如,您的服务器有多少处理器(CPU内核)?有多少可供使用?如果您没有可用的CPU,那么使用并行提示没有任何好处;事实上,管理并行执行的开销可能会导致结果变慢。
为什么选择平行度5?除非你可以保证有五个可用的CPU同时运行五个线程,否则当其他线程正在运行时,线程将暂停。两个人的权力更有意义(2,4,8等)。
" cpu计数为120"
你可以使用多少。根据实际工作量,您可能无法在需要时获取五个。但是,赔率非常高。
现在,关于并行是否会对您的实际查询产生任何影响,我们很难说清楚。解释计划显示优化器将尝试并行执行,但不会显示您是否从中获益。
显然,在所有条件相同的情况下,将大型工作分成几个流并同时运行它们会导致总耗时减少。事情并不总是这样。因此,尝试使用和不使用并行提示对语句进行基准测试。查询V$PQ_TQSTAT
以查看会发生什么。 (您可能需要友好的DBA授予您该视图的权限。)