ORACLE的并行处理之并行查询

--并行查询
可以使用并行查询的情况
1. Full table scans, full partition scans, and fast full index scans
2.  Index full and range scans, but only if the index is partitioned (at a given time, a partition
  can be accessed by a single slave process only; as a side effect, the degree of parallelism
  is limited by the number of accessed partitions)
3.  Joins (Chapter 10 provides some examples)
4.  Set operators
5.  Sorts
6.  Aggregations

在会话级启动 或禁用并行查询
 SQL> ALTER SESSION ENABLE PARALLEL QUERY;
 或
 SQL> ALTER SESSION DISABLE PARALLEL QUERY;
 
启动并行查询时同覆盖表或索引定义的并行度
 SQL> ALTER SESSION FORCE PARALLEL QUERY PARALLEL 4;
 

查看当前会话的并行查询状态
 SELECT pq_status
 FROM v$session
 WHERE sid = (select sid from v$mystat where rownum=1);

--并行查询的例子

--Full table scans
SQL>select /*+ full(t) */ *
  from big_table t;

--------------------------------------------------------------------
| Id  | Operation            |  Name       | Rows  | Bytes | Cost  |
--------------------------------------------------------------------
|   0 | SELECT STATEMENT     |             |  2481K|   340M|  2924 |
|   1 |  TABLE ACCESS FULL   | BIG_TABLE   |  2481K|   340M|  2924 |
--------------------------------------------------------------------

--fast full index scans
SQL>select /*+INDEX_FFS(t)*/ count(*)
   from big_table t;
  
------------------------------------------------------------------------------------------------------------------
| Id  | Operation              |  Name                      | Rows  | Bytes | Cost  |  TQ    |IN-OUT| PQ Distrib |
------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT       |                            |     1 |       |     4 |        |      |            |
|   1 |  SORT AGGREGATE        |                            |     1 |       |       |        |      |            |
|   2 |   SORT AGGREGATE       |                            |     1 |       |       | 60,00  | P->S | QC (RAND)  |
|   3 |    INDEX FAST FULL SCAN| BIG_TABLE_OBJECT_NAME_IND  |  2481K|       |     4 | 60,00  | PCWP |            |
------------------------------------------------------------------------------------------------------------------

--join

SQL>select /*+  leading(t1) use_NL(t1,t2)
           index(t2) parallel_index(t2 2)
           parallel(t1 2)*/
       *
     from ALL_TAB_PART t1, big_table t2
      where t2.owner = t1.table_owner
       and t2.object_name = t1.table_name
  
-----------------------------------------------------------------------------------------------------------------------
| Id  | Operation                   |  Name                      | Rows  | Bytes | Cost  |  TQ    |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                            |  2761 |  6072K|   901 |        |      |            |
|*  1 |  TABLE ACCESS BY INDEX ROWID| BIG_TABLE                  |     3 |   432 |     2 | 59,00  | PCWC |            |
|   2 |   NESTED LOOPS              |                            |  2761 |  6072K|   901 | 59,00  | P->S | QC (RAND)  |
|   3 |    TABLE ACCESS FULL        | ALL_TAB_PART               |   899 |  1850K|     2 | 59,00  | PCWP |            |
|*  4 |    INDEX RANGE SCAN         | BIG_TABLE_OBJECT_NAME_IND  |  2761 |       |     1 | 59,00  | PCWP |            |
-----------------------------------------------------------------------------------------------------------------------

--sort
SQL>select /*+ parallel(t1,4) */ distinct object_name
  from big_table t1

-------------------------------------------------------------------------------------------------------------------------
| Id  | Operation             |  Name                      | Rows  | Bytes |TempSpc| Cost  |  TQ    |IN-OUT| PQ Distrib |
-------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |                            |  2481K|    40M|       |  3194 |        |      |            |
|   1 |  SORT UNIQUE          |                            |  2481K|    40M|   114M|  3194 | 61,01  | P->S | QC (RAND)  |
|   2 |   INDEX FAST FULL SCAN| BIG_TABLE_OBJECT_NAME_IND  |  2481K|    40M|       |     1 | 61,00  | P->P | HASH       |
-------------------------------------------------------------------------------------------------------------------------
 
SQL>select /*+ full(t1) parallel(t1,4) */ *
  from big_table t1
  order by object_name

---------------------------------------------------------------------------------------------------------
| Id  | Operation            |  Name       | Rows  | Bytes |TempSpc| Cost  |  TQ    |IN-OUT| PQ Distrib |
---------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |             |  2481K|   340M|       | 19327 |        |      |            |
|   1 |  SORT ORDER BY       |             |  2481K|   340M|   861M| 19327 | 62,01  | P->S | QC (ORDER) |
|   2 |   TABLE ACCESS FULL  | BIG_TABLE   |  2481K|   340M|       |   731 | 62,00  | P->P | RANGE      |
---------------------------------------------------------------------------------------------------------

--分区
SQL>select /*+ parallel_index(t1 2)*/ *
  from MESSAGE_SEND_LOG t1
  where id< '2010010100000000'


SQL>select /*+ parallel(t1)*/ *
  from MESSAGE_SEND_LOG t1
   where id< '2010010100000000'

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22782597/viewspace-622717/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22782597/viewspace-622717/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值