Chinaunix首页 | 论坛 | 博客
  • 博客访问: 283571
  • 博文数量: 70
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 531
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-12 20:22
个人简介

1.01^365=37.8 0.99^365=0.03

文章分类

全部博文(70)

文章存档

2017年(9)

2016年(4)

2015年(14)

2014年(43)

我的朋友

分类: Oracle

2014-03-02 11:13:14

并行主要用在DDL上,也可以说是DBA的一个强有力的工具,较少使用在查询当中。对于查询,调优SQL是最有力的方法。关于并行的使用很简单,可以通过参数,语法,或提示来进行。下面,我将一一进行介绍,并给出相应的例子(由于我的机器不是很好,可能达不到预想的效果,我会进行知识点与流程的说明)。

要使用并行,首要要确定并行度。并行度(DOP)定义了将创建并行流个数,最优的并行度对于获得好的并行性能到至关重要。Oracle可根据下面的规则来确实并行度。
(1)如果指定或请求并行执行,但没有指定并行度,默认的并行度被设置为系统CPU核数的两倍。通过参数parallel_threads_per_cpu来控制,如下:
SQL> show parameters parallel_thread

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
parallel_threads_per_cpu             integer
2


1.查询
Sql代码  
SELECT /*+ Parallel(t,8) */ * FROM emp t;  
SELECT /*+ Parallel(8) */ * FROM emp t;  
SELECT /*+ Parallel */ * FROM emp t;         

2.创建索引
Sql代码  
create index idx_emp_test on emp(empno,ename,job) nologging parallel 32;  

3.执行表分析
Sql代码  
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname => 'scott',tabname => 'emp',    degree => 32,cascade => true);  


4.插入
Sql代码  
INSERT /*+ append parallel(30) */   
INTO t_a  
SELECT /*+ parallel(30) */  
FROM t_b  

-- PS:使用insert select做测试, insert加 Append后, 加不加Parallel 效果没有什么差别,不知为何.  但后面的select 不加Parallel 差别太大了  

SQL> create table t
  2  parallel (degree default)
  3  as
  4  select *
  5  from all_objects
  6  /

Table created.

SQL> create index t_idx on t(object_id) parallel (degree 4)
  2  /

Index created.

SQL>
说明:在创建表时,我使用了默认的并行度,在创建索引时,我手工指定了并行度为4。
(6)在查询或DML中,可以使用提示(hint)来指定并行度,如下:
SQL> select /*+parallel(t 4)*/ count(*)
  2  from t
  3  where object_name like 'D%'
  4  /

  COUNT(*)
----------
      1995

SQL> update /*+parallel(t)*/ t set created = sysdate
  2  /

7851 rows updated.

SQL> commit;

Commit complete.

SQL> merge /*+parallel(t) parallel(o)*/ into t
  2  using all_objects o on (t.object_id = o.object_id)
  3  when matched then
  4  update set t.created = o.created
  5  /

7851 rows merged.

SQL> commit;

Commit complete.
阅读(6521) | 评论(0) | 转发(0) |
0

上一篇:如何查看shell类型

下一篇:HP-UX MC/SG Usage

给主人留下些什么吧!~~