Oracle database 9i/10g/11g编程艺术中,外键未加索引导致死锁的问题
时间:2011-11-24
来源:互联网
《Oracle database 9i/10g/11g编程艺术》一书中讲死锁章节提到,导致死锁的头号原因是外键未加索引,给出的例子是
第一步建表:
create table p (x int primary key);
create table c (x references p);
insert into p values (1);
insert into p values (2);
commit;
第二步:
1)第一个会话执行
insert into c values (2);
2)第二个会话执行
delete from p;
执行后阻塞
3)第三个会话执行
insert into c values (2);
执行后阻塞
4)第一个会话执行
commit;
第三个会话就会发生死锁
书上说表C加上索引就行了,结果还是不行
create index index_c_x on c(x);
可是运行结果和没有索引时一样的,为什么呢?
还有个问题就是索引和外键和死锁有什么关系啊?
另:我的环境是Oracle Database 10g Enterprise Edition Release 10.1.0.2.0
第一步建表:
create table p (x int primary key);
create table c (x references p);
insert into p values (1);
insert into p values (2);
commit;
第二步:
1)第一个会话执行
insert into c values (2);
2)第二个会话执行
delete from p;
执行后阻塞
3)第三个会话执行
insert into c values (2);
执行后阻塞
4)第一个会话执行
commit;
第三个会话就会发生死锁
书上说表C加上索引就行了,结果还是不行
create index index_c_x on c(x);
可是运行结果和没有索引时一样的,为什么呢?
还有个问题就是索引和外键和死锁有什么关系啊?
另:我的环境是Oracle Database 10g Enterprise Edition Release 10.1.0.2.0
作者: qq548573025 发布时间: 2011-11-24
子表的外键未加索引,将被全表锁 ,这个和锁有关
作者: java3344520 发布时间: 2011-11-24
这个测试你没有做好,建议认真看书,重新做一遍,做的过程中一定要仔细看锁的信息,你就会理解了
作者: java3344520 发布时间: 2011-11-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28