查看: 5540|回复: 12

【大话IT】为什么会出现表级锁?

[复制链接]
论坛徽章:
3
优秀写手
日期:2014-12-25 06:00:032015年新春福章
日期:2015-03-04 14:51:122015年新春福章
日期:2015-03-06 11:57:31
发表于 2014-12-23 11:25 | 显示全部楼层 |阅读模式
有2张表 A 和 B A的某一字段上建有外键,指向B表的主键。A表也有主键。现在对 A和B做插入和删除操作。insert每次1行,delete也是每次1行。现在在A表上发生了表级锁。
请问一下原因,为什么会发生表级锁?
论坛徽章:
6
2010广州亚运会纪念徽章:板球
日期:2010-11-15 11:29:572010广州亚运会纪念徽章:足球
日期:2010-11-15 11:30:022013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-20 06:00:12沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
发表于 2014-12-23 11:27 | 显示全部楼层

回帖奖励 +20

A表的外键字段上有没有索引?

使用道具 举报

回复
求职 : 数据库管理员
认证徽章
论坛徽章:
11
ITPUB社区千里马徽章
日期:2013-06-09 10:15:34懒羊羊
日期:2015-03-04 14:52:11懒羊羊
日期:2015-02-10 13:36:05马上有对象
日期:2015-02-02 12:29:02红宝石
日期:2015-01-19 09:44:10马上有车
日期:2014-11-11 14:16:07马上有车
日期:2014-03-27 15:59:39优秀写手
日期:2014-03-12 06:00:13马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
发表于 2014-12-23 13:04 | 显示全部楼层
外键上建了索引就不会了

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-12-25 06:00:032015年新春福章
日期:2015-03-04 14:51:122015年新春福章
日期:2015-03-06 11:57:31
 楼主| 发表于 2014-12-23 13:27 | 显示全部楼层
为什么加上索引就不会有锁,不加索引就会有表级锁?原理是什么

使用道具 举报

回复
认证徽章
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:43:09喜羊羊
日期:2015-05-18 16:24:25慢羊羊
日期:2015-06-12 13:08:22暖羊羊
日期:2015-07-02 16:06:20暖羊羊
日期:2015-07-06 16:28:55狮子座
日期:2015-07-29 17:14:43摩羯座
日期:2015-09-02 13:58:47白羊座
日期:2015-09-08 10:39:06天枰座
日期:2015-09-17 21:41:53摩羯座
日期:2015-10-29 21:07:02
发表于 2014-12-23 14:10 | 显示全部楼层
wenyzh 发表于 2014-12-23 13:27
为什么加上索引就不会有锁,不加索引就会有表级锁?原理是什么

当你在B表上删除一条记录时,数据库要检查被删除这条记录的主键在A表中是否有引用,有的话,是不允许删除的。而在这个检查过程中,如果A表在外键所在列上无索引,就需要进行全表扫描,而如果有索引,则可以通过索引来检查。

使用道具 举报

回复
论坛徽章:
6
2010广州亚运会纪念徽章:板球
日期:2010-11-15 11:29:572010广州亚运会纪念徽章:足球
日期:2010-11-15 11:30:022013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-20 06:00:12沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
发表于 2014-12-23 14:12 | 显示全部楼层
wenyzh 发表于 2014-12-23 13:27
为什么加上索引就不会有锁,不加索引就会有表级锁?原理是什么

根据我的经验,导致死锁的头号原因是外键未加索引(第二号原因是表上的位图索引遭到并发更新,
这个内容将在第11 章讨论)。在以下两种情况下,Oracle 在修改父表后会对子表加一个全表锁:
􀂉 如果更新了父表的主键(倘若遵循关系数据库的原则,即主键应当是不可变的,这种情况就很
少见),由于外键上没有索引,所以子表会被锁住。
􀂉 如果删除了父表中的一行,整个子表也会被锁住(由于外键上没有索引)。

看看Tom的书: oracle 9i&10g编程艺术

使用道具 举报

回复
论坛徽章:
22
2014年世界杯参赛球队: 哥斯达黎加
日期:2014-06-06 15:02:04沸羊羊
日期:2015-06-17 14:51:07天枰座
日期:2015-07-17 09:51:12金牛座
日期:2016-03-21 21:10:40摩羯座
日期:2016-03-29 15:07:30娜美
日期:2016-06-22 19:49:29奥运会纪念徽章:篮球
日期:2016-09-02 09:45:25奥运会纪念徽章:现代五项
日期:2016-09-23 16:25:05山治
日期:2018-01-04 21:26:162015年新春福章
日期:2015-04-27 10:18:48
发表于 2014-12-23 14:39 | 显示全部楼层
在不删除主表记录以及不更新主表的主键值情况,子表没有建索引也不会有影响。

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
发表于 2014-12-23 14:42 | 显示全部楼层
IT渔夫 发表于 2014-12-23 14:39
在不删除主表记录以及不更新主表的主键值情况,子表没有建索引也不会有影响。

还有点,查询可能有影响。。。

使用道具 举报

回复
论坛徽章:
22
2014年世界杯参赛球队: 哥斯达黎加
日期:2014-06-06 15:02:04沸羊羊
日期:2015-06-17 14:51:07天枰座
日期:2015-07-17 09:51:12金牛座
日期:2016-03-21 21:10:40摩羯座
日期:2016-03-29 15:07:30娜美
日期:2016-06-22 19:49:29奥运会纪念徽章:篮球
日期:2016-09-02 09:45:25奥运会纪念徽章:现代五项
日期:2016-09-23 16:25:05山治
日期:2018-01-04 21:26:162015年新春福章
日期:2015-04-27 10:18:48
发表于 2014-12-23 15:10 | 显示全部楼层
dingjun123 发表于 2014-12-23 14:42
还有点,查询可能有影响。。。

忘记了

使用道具 举报

回复
求职 : 数据库管理员
认证徽章
论坛徽章:
11
ITPUB社区千里马徽章
日期:2013-06-09 10:15:34懒羊羊
日期:2015-03-04 14:52:11懒羊羊
日期:2015-02-10 13:36:05马上有对象
日期:2015-02-02 12:29:02红宝石
日期:2015-01-19 09:44:10马上有车
日期:2014-11-11 14:16:07马上有车
日期:2014-03-27 15:59:39优秀写手
日期:2014-03-12 06:00:13马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
发表于 2014-12-23 16:40 | 显示全部楼层
moseslin 发表于 2014-12-23 13:04
外键上建了索引就不会了

一般情况下, Oracle 子表的外键需要添加索引,如果外键不添加索引,以下三种情况会导致修改父表会锁住子表:
1、更新父表主键,子表会被锁住
2、删除父表一行, 整个子表会被锁住
3、合并到父表,子表会被锁住。(9i、10G是这样,11G不会)
如果满足以下三种情况,则不需要在外键建立索引:
1、没有从父表删除数据
2、没有更新父表主键
3、没有父表关联到子表

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表