当前位置:  数据库>oracle

Oracle 11g 并行DML

    来源: 互联网  发布时间:2017-05-25

    本文导语: Oracle 11g 并行DML(PDML) 并行DML应用在决策支撑系统(decision support system  DSS)环境时,对于访问大对象时,可扩展性和性能有灰常显著的效果。 不能把PDML当成提高OLTP应用速度的一个特性。PDML在大型数据仓库中很有用,它利于...

Oracle 11g 并行DML(PDML)

并行DML应用在决策支撑系统(decision support system  DSS)环境时,对于访问大对象时,可扩展性和性能有灰常显著的效果。

不能把PDML当成提高OLTP应用速度的一个特性。PDML在大型数据仓库中很有用,它利于大量的数据批量更新。

开启PDML

PDML有别于并行查询,除非显示的请求PDML ,否则不能执行PDML。

SQL> alter session enable parallel dml;

Session altered.

这个表属性可能是并行的,但是与并行查询不同,这对于PDML还不够,必须显示的在会话中启动PDML.

PDML 采用的是一种伪分布式的实现,存在一些限制

1、PDML期间不支持触发器

2、PDML期间,不支持某些方式声明的引用完整性。因为表中的每个部分会在单独的会话中作为单独的事务进行处理。PDML操作不支持自引用完整性,那样可能会出现死锁

3、提交或回滚之前,不能访问用PDML修改的表。

4、不支持延迟约束

5、如果表示分区的,PDML只可能有位图索引或LOB列的表上执行。而且并行度取决于分区数。无法在子分区内再并行操作,因为每一个分区只有一个并行执行服务器来处理

6、执行PDML时,不支持分布式事务

7、PDML不支持聚簇表

测试:

SQL> alter session disable parallel dml;


SQL> explain plan for update /*+ PARALLEL(4) */ test_b set object_name='AAAA';

SQL> select * from table(dbms_xplan.display);


Plan hash value: 725367477
---------------------------------------------------------------------------------------------------------------
| Id  | Operation            | Name    | Rows  | Bytes | Cost (%CPU)| Time    |    TQ  |IN-OUT| PQ Distrib |
---------------------------------------------------------------------------------------------------------------
|  0 | UPDATE STATEMENT      |          | 75339 |  1839K|    81  (0)| 00:00:01 |        |      |            |
|  1 |  UPDATE              | TEST_B  |      |      |            |          |        |      |            |
|  2 |  PX COORDINATOR      |          |      |      |            |          |        |      |            |
|  3 |    PX SEND QC (RANDOM)| :TQ10000 | 75339 |  1839K|    81  (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |
|  4 |    PX BLOCK ITERATOR |          | 75339 |  1839K|    81  (0)| 00:00:01 |  Q1,00 | PCWC |            |
|  5 |      TABLE ACCESS FULL| TEST_B  | 75339 |  1839K|    81  (0)| 00:00:01 |  Q1,00 | PCWP |            |
---------------------------------------------------------------------------------------------------------------------------------------

--发现并没有真正的实现并行.

开启PDML

SQL> alter session enable parallel dml;

Session altered.

SQL> explain plan for update /*+ parallel(4) */ test_b set object_name='BBBBB';

Explained.

SQL> select * from table(dbms_xplan.display);

Plan hash value: 2467161980

------------------------------------------------------------------------------------------------------------------
| Id  | Operation                | Name    | Rows  | Bytes | Cost (%CPU)| Time    |    TQ  |IN-OUT| PQ Distrib |
------------------------------------------------------------------------------------------------------------------
|  0 | UPDATE STATEMENT        |          | 75339 |  1839K|    81  (0)| 00:00:01 |        |      |            |
|  1 |  PX COORDINATOR          |          |      |      |            |          |        |      |            |
|  2 |  PX SEND QC (RANDOM)    | :TQ10001 | 75339 |  1839K|    81  (0)| 00:00:01 |  Q1,01 | P->S | QC (RAND)  |
|  3 |    INDEX MAINTENANCE    | TEST_B  |      |      |            |          |  Q1,01 | PCWP |            |
|  4 |    PX RECEIVE          |          | 75339 |  1839K|    81  (0)| 00:00:01 |  Q1,01 | PCWP |            |
|  5 |      PX SEND RANGE      | :TQ10000 | 75339 |  1839K|    81  (0)| 00:00:01 |  Q1,00 | P->P | RANGE      |
|  6 |      UPDATE            | TEST_B  |      |      |            |          |  Q1,00 | PCWP |            |
|  7 |        PX BLOCK ITERATOR |          | 75339 |  1839K|    81  (0)| 00:00:01 |  Q1,00 | PCWC |            |
|  8 |        TABLE ACCESS FULL| TEST_B  | 75339 |  1839K|    81  (0)| 00:00:01 |  Q1,00 | PCWP |            |
------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------

注:

总结:

PDML需要显示打开,只有打开了PDML , 才能是真正意义上的并发操作.

SQL> alter session enable parallel dml;

执行完可以关闭

SQL> alter session disable parallel dml;

相关阅读:

Oracle DML流程

PL/SQL“ ORA-14551: 无法在查询中执行 DML 操作”解决

MySQL常用DDL、DML、DCL语言整理(附样例)

Oracle基本事务和ForAll执行批量DML练习

Oracle DML语句(insert,update,delete) 回滚开销估算


    
 
 

您可能感兴趣的文章:

  • Oracle数据库并行查询出错的解决方法
  • SQL Server和Oracle并行处理比较分析
  • Oracle并行操作之并行查询实例解析
  • 用Oracle并行查询发挥多CPU的威力
  • oracle 11g最新版官方下载地址
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • Linux版本的Oracle 11g将首先被发布
  • 关于Linux下oracle是10g?还是11g?
  • Oracle 11g 相关工具netca,dbca乱码之解决
  • fedora10安装oracle11g提示物理内存不足怎么办?
  • Oracle 11g解锁scott
  • Oracle 11g R2 数据库将在9月发布
  • Oracle内存数据库11g和高速缓存11g上市
  • 有人在fedora 10下安装 oracle database 11g,没有呀?提供个安装步骤
  • 在ubuntu10.04上安装oracle11g失败
  • 关于Oracle 11g 闪回的一个小问题
  • Oracle11g备份和恢复功能的提高
  • linux redhat5.6安装oracle11g在自动创建实例时停住不动,有图
  • Oracle针对Eclipse 11g发布开发包
  • centos5.4安装oracle11g的问题
  • Oracle 11g 数据库 Alert日志的新发展
  • Redhat 6 安装 oracle 11g2的问题
  • 基于Linux环境的Oracle 11g数据库正式推出
  • Oracle 11G密码180天过期后的修改方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 虚拟机装Oracle R12与Oracle10g
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • ORACLE中DBMS_RANDOM随机数生成包 iis7站长之家
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • Oracle 数据库(oracle Database)性能调优技术详解
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • ORACLE日期相关操作
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE数据库常用字段数据类型介绍
  • Linux系统下Oracle的启动与Oracle监听的启动
  • Oracle 12c的九大最新技术特性介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • ORACLE中DBMS_RANDOM随机数生成包
  • 网间Oracle的连接,远程连接Oracle服务器??
  • 请教:.profile中:if [ -d /opt/oracle/db01/app/oracle/product/9.2.0 ]是什么意思?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,