返回数说广场
0
大表更新SQL语句UPDATE /*+PARALLEL(2)*/T_TAB SET C_ID='TEST$PAL'; 如下并行更新描述正确的是?
先执行ALTER SESSION ENABLE PARALLEL DML;再执行上述UPDATE语句,执行过程中该SQL相关V$SESSION会话记录共5条,其中2条记录为并行更新写入进程(P00N)会话。
执行ALTER SESSION ENABLE/DISABLE PARALLEL DML;改变DML并行状态时,当前会话事务必须已处理完毕(已提交或已回滚)
新建会话并直接上述UPDATE语句,执行查询时全表扫描实现并行,但更新数据仍是串行。
当前会话无法在事务内重复执行上述UPDATE语句,每执行一次并行DML后,必须提交或回滚一次事务才可重复执行。
解析
PARALLEL DML未开启时,当前SQL执行期间共3个会话(当前应用会话+2个并行查询后台进程会话);
PARALLEL DML开启时,当前SQL执行期间共5个会话(当前应用会话+2个并行查询后台进程会话+2个并行写入后台进程会话);
并行DML操作时,通过PX COORDINATOR协调器管理多个并行会话事务,重复执行PARALLEL大于1的带HINT SQL时,会报ORA-12838: 无法在并行模式下修改之后读/修改对象。
可通过V$PX_SESSION视图QCSID列获取协调会话与并发会话SID之间关系,每次DML执行并提交或回滚事务,V$PX_SESSION并行会话记录将消失
0
0 60
分享
评论
热门数说


