[转帖]关于oralce并行DML_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4398 | 回复: 0   主题: [转帖]关于oralce并行DML        下一篇 
derek
注册用户
等级:中校
经验:1550
发帖:209
精华:0
注册:2011-7-21
状态:离线
发送短消息息给derek 加好友    发送短消息息给derek 发消息
发表于: IP:您无权察看 2011-9-2 14:08:52 | [全部帖] [楼主帖] 楼主

并行查询

打开与关闭并行查询

alter  table table_name parallel;

or
alter table table_name noparallel;


alter table table_name parallel 4;  这条语句是告诉 oracle ,在创建这个表的执行计划时使用并行度4

大多时候我们无法确定查询的并行度,需要根据当前的 服务器资源。

所以大部分时候都会用

alter table table_name parallel;

我们可以看看执行计划

表 FIANCEITEMDATA 

select * from fianceitemdata

执行计划如下,执行的是全表扫描

SELECT STATEMENT, GOAL = ALL_ROWS116513440129568220

 TABLE ACCESS FULLGUOYUANUSERFIANCEITEMDATA116513440129568220


执行

alter table fianceitemdata parallel;


SELECT STATEMENT, GOAL = ALL_ROWS      323  134401  29568220
PX COORDINATOR
PX SEND QC (RANDOM)  SYS  :TQ10000  323  134401  29568220
PX BLOCK ITERATOR      323  134401  29568220
TABLE ACCESS FULL  GUOYUANUSER  FIANCEITEMDATA32313440129568220


cost 由1165下降到323



我们从最后一行向上解读一下这个执行计划

最后一行执行了全表扫描

倒数第二行,全表扫描被分解成多个较小的扫描

倒数第三行,倒数第二行 将所有子结果传送给并行查询协调器



这个执行计划有点简单,闲麻烦用pl/sql developer生成的,大家可以用sqlplus看的更清楚一些。

并行DML(PDML)

oracle 将PDML范围限定为insert update delete merge 并不包括select

PDML有别于并行查询,

当一个表是并行的并不够,与并行查询不同,PDML还必须要在会话中启用

alter session enable parallel dml;

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

1, PDML操作期间不支持触发器

2, PDML期间,不支持某些申明方式的引用的完整性约束。(都分成N块了让人家怎么去支持)

3, 在提交或回滚前,不能访问PDML修改的表。 全锁了

4, PDML不支持延迟约束

5, 不支持高级复制(高级复制特性的实现要基于触发器)

6, 如果表是分区的,PDML只可能在有位图索引或者LOB列的表上执行,而且并行度取决于分区数

7, 执行PDML时不支持分布式事务。

8, PDML不支持聚簇表。

如果违反了任何一个限制,语句会串行执行或者是产生一个错误。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论