谈谈HINT /*+parallel(t,4)*/在SQL调优中的重要作用

Posted hurong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈谈HINT /*+parallel(t,4)*/在SQL调优中的重要作用相关的知识,希望对你有一定的参考价值。

/*+parallel(t,4)*/在大表查询等操作中能够起到良好的效果,
基于并行查询要启动并行进程、分配任务与系统资源、合并结果集,这些都是比较消耗资源,
但我们为能够减少执行事务的时间使用parallel HINT还是值得的,尤其在ODS系统中报表统计等方面更有使用意义.
一般而言主要在如下情况使用parallel HINT
1.表的数据量很大,超过一千万;
2.数据库主机是多个CPU;
3.系统的当前负载较低;

简单的测试如下,效果很明显的:

SQL> select /*+parallel(t,4)*/count(*) from   t;

  COUNT(*)
----------
  30245882

已用时间:  00: 01: 32.04

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=5411 Card=1)
   1    0   SORT (AGGREGATE)
   2    1     SORT* (AGGREGATE)                                        :Q351880
                                                                       00

   3    2       TABLE ACCESS* (FULL) OF ‘t‘ (Cost=5411 Car :Q351880
          d=2822493)                                                   00



   2 PARALLEL_TO_SERIAL            SELECT /*+ PIV_SSF */ SYS_OP_MSR(COUNT(*)) F
                                   ROM (SELECT /*+ NO_EXPAND ROWID(A2)

   3 PARALLEL_COMBINED_WITH_PARENT

 

SQL> select count(*) from t;

  COUNT(*)
----------
  30245882

已用时间:  00: 04: 34.02

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   SORT (AGGREGATE)
   2    1     TABLE ACCESS (FULL) OF ‘t‘

 







以上是关于谈谈HINT /*+parallel(t,4)*/在SQL调优中的重要作用的主要内容,如果未能解决你的问题,请参考以下文章

oracle 并行查询为啥只有一个进程在读。 我写了一个查询语句在里面些了个 /*+ parallel .....*/

并行与hint同时存在

oracle 的hint有啥用

java面试-垃圾回收器谈谈你的理解

oracle 怎样使用并行查询

即使使用 parallel(8) 提示,具有数百万条记录的表中的 Count(1) 也很慢