首页
网页制作
网络编程
脚本专栏
数据库
网站运营
网络安全
平面设计
CMS教程
搜索
建站极客
数据库
oracle
正文
Oracle外键不加索引引起死锁示例
所属分类:
数据库
/
oracle
阅读数: 399
收藏 0
赞 0
分享
--创建一个表,此表作为子表
create table fk_t as select *from user_objects;
delete from fk_t where object_id is null;
commit;
--创建一个表,此表作为父表
create table pk_t as select *from user_objects;
delete from pk_t where object_id is null;
commit;
--创建父表的主键
alter table PK_t add constraintpk_pktable primary key (OBJECT_ID);
--创建子表的外键
alter table FK_t addconstraint fk_fktable foreign key (OBJECT_ID) references pk_t (OBJECT_ID);
--session1:执行一个删除操作,这时候在子表和父表上都加了一个Row-S(SX)锁
delete from fk_t whereobject_id=100;
delete from pk_t where object_id=100;
--session2:执行另一个删除操作,发现这时候第二个删除语句等待
delete from fk_t whereobject_id=200;
delete from pk_t whereobject_id=200;
--回到session1:死锁马上发生
delete from pk_t whereobject_id=100;
session2中报错:
SQL> delete from pk_table where object_id=200;
delete from pk_table where object_id=200
*
第 1 行出现错误:
ORA-00060: 等待资源时检测到死锁
当对子表的外键列添加索引后,死锁被消除,因为这时删除父表记录不需要对子表加表级锁。
--为外键建立索引
create index ind_pk_object_id on fk_t(object_id) nologging;
--重复上面的操作session1
delete from fk_t whereobject_id=100;
delete from pk_t whereobject_id=100;
--session2
delete from fk_t whereobject_id=200;
delete from pk_t whereobject_id=200;
--回到session1不会发生死锁
delete from pk_t whereobject_id=100;
更多精彩内容
其他人还在看
VS2015连接Oracle数据库的详细步骤
这篇文章主要介绍了VS2015连接Oracle数据库的详细步骤,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
常用的Oracle doc命令(收藏)
这篇文章主要介绍了常用的Oracle doc命令(收藏)的相关资料,非常不错,具有参考借鉴价值,需要的朋友参考下吧
评论 0
收藏 0
赞 0
分享
ORACLE SQL语句优化技术要点解析
这篇文章主要介绍了ORACLE SQL语句优化技术的相关内容,小编觉得挺不错的,在这里分享给大家,需要的朋友可以参考下。
评论 0
收藏 0
赞 0
分享
ORACLE多条件统计查询的简单方法
这篇文章主要介绍了ORACLE多条件统计查询的简单方法,具有一定参考价值。这里给大家分享下,希望对大家有所帮助。
评论 0
收藏 0
赞 0
分享
ORACLE批量导入图片到BLOB字段代码示例
这篇文章主要介绍了ORACLE批量导入图片到BLOB字段代码示例,此代码示例是文章作者的项目源码,具有一定参考价值,需要的朋友可以了解下。
评论 0
收藏 0
赞 0
分享
PLSQL Developer登录的默认密码介绍
这篇文章主要介绍了PLSQL Developer登录的默认密码介绍,具有一定参考价值,需要的朋友可以了解下。
评论 0
收藏 0
赞 0
分享
Oracle数据行拆分多行方法示例
oracle数据库使用过程中,怎样将一行或者多行数据分割成需要的多行数据,本文我们就来看看具体方法,需要的朋友可以参考。
评论 0
收藏 0
赞 0
分享
Oracle表空间不足的两种解决办法
这篇文章主要介绍了Oracle表空间不足的两种解决办法,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
巧妙解决Oracle NClob读写问题(经验分享)
下面小编就为大家带来一篇巧妙解决Oracle NClob读写问题(经验分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
评论 0
收藏 0
赞 0
分享
oracle执行update语句时卡住问题分析及解决办法
这篇文章主要介绍了oracle执行update语句时卡住问题分析及解决办法,涉及记录锁等相关知识,具有一定参考价值,需要的朋友可以了解。
评论 0
收藏 0
赞 0
分享
查看更多
网络赚钱
更多
最强PS网银汇款截图:轻松骗走网店17万奢侈品
怎样利用网络赚钱 网络赚钱有哪些方法
Google
app开发者如何从应用程序中赚钱?
光大银行网上银行西联汇款收汇方法分享
站长必看:让你的网站多一种赚钱方法
站长故事
更多
一个个人站长的网站推广运营核心销策略
我眼里的2014年中国互联网大会亮点
分享我经营网站的方法心得,希望大家能学到知识
一成不变的站长到底还能活多久?
创业失败:一个屌丝站长4年互联网的辛酸经历
我认识的互联网活化石金山劳模雷军