关于append并行插入分区引起锁等待问题
来源:互联网 发布:拍照解题软件 编辑:程序博客网 时间:2024/05/17 03:52
测试环境:
建一个分区表
create table T_A
(
B NUMBER,
A NUMBER
)
partition by list (A)
(
partition P1001 values (1),
partition P1001 values (2),
partition P1001 values (3),
partition P1001 values (4),
partition P1001 values (5),
partition P1001 values (6)
);
测试1 :将以下的语句同时执行
报错ora-12838 无法在并行模式下访问修改行
insert /*+ append */ into t_a values(1,1);
select * from T_A;
测试2 :将一下语句分两个session执行,但是都不提交
发现 第一插入成功第二个session 一直等待
insert /*+ append */ into t_a values(1,1);
insert /*+ append */ into t_a values(1,2);
----查看第一个语句 锁的资源信息 LOCKED_MODE 分0-6等 6是排他锁所级别最高
select t1.OBJECT_ID ,t1.LOCKED_MODE
from v$locked_object t1
Where t1.SESSION_ID In(171)
--发现第一个session将所有的分区都锁上了
Select *
From Dba_Objects T2
Where T2.Object_Id In
(5948621, 5948622, 5948624, 5948627, 5948626, 5948625, 5948623)
结论:/*+ append */标记在使用的时候插入时,会将访问的对象
上一个最高级别锁,将所有分区上锁,并且被锁住的对象无法访问,必须等到前一个
session提交才能执行后面的。
因此这种方式只适合,并行访问度不高的表;子查询时间短并且插入数据少的操作
- 关于append并行插入分区引起锁等待问题
- DB2环境变量设置引起的锁等待超时问题
- [转载Oracle官方中文博客]关于RunQ过高引起的latch等待问题
- 插入语句中append提高效率问题介绍
- 关于行锁等待问题的理解
- append+parallel,并行度
- 关于insert /*+ append*/ 各种insert插入速度比较
- 关于/*APPEND*/
- /*+APPEND*/插入性能总结
- ORACLE 索引并行引起的direct path read temp和latch free等待导致进程数超过最大数
- “大”事务引起的锁等待分析案例
- 关于Android插入问题
- 关于正则引起线程阻塞的问题
- 关于句柄引起的内存泄露问题
- 并行分区特性
- 关于并发线程的等待问题
- Java_JavaEE_SSH_hibernate向mysql插入数据引起中文乱码问题
- Oracle快速插入数据append
- oracle中的正则表达式(regular expression)
- 编译OPENPHONE
- java应用热配置实现
- HTML与DTD
- UML
- 关于append并行插入分区引起锁等待问题
- STL
- UT tools
- coredump
- Linux zip/unzip
- Domain or host
- gprofile tips
- Performance about C++ code
- IP语音:问题与策略