深入剖析:update pk会发生什么?

张大朋(Lunar)Oracle 资深技术专家

Lunar 拥有超过十年的 ORACLE SUPPORT 从业经验,曾经服务于ORACLE ACS部门,现就职于 ORACLE Sales Consultant 部门,负责的产品主要是 Exadata,Golden Gate,Database 等。

前文回顾:insert 的enq: TM – contention

结论:

对存在pk的表来说,无论有没有子表,update pk的操作会同时阻塞对该表做insert操作中那些pk跟update语句更改前、后两个值相关的会话。

测试六

测试一下子表无事务的情况下,对父表的update是如何影响父表的delete和insert的 首先,我们在Session 4(SID 116)对做commit,此时session 2(SID 220)会自动解锁,并报出来应有的违反约束的错误ORA-02292:

Session 4:

现在,我们把所有的会话都做commit或者rollback,然后观察对父表的updae会不会对父表的其他DML操作有影响:

Session 2(SID 220):

Session 4(SID 116):

Session 5(SID 222):

Session 3观察:

这里看见session 4对父表的delete不受session 2在父表的update的影响,而session 5对父表的insert 会被session 2在父表的update阻塞,被阻塞的对父表的insert操作等待事件为:enq: TX – row lock contention

在测试一次:把上面所有会话都commit或者rollback,然后:

Session 2(SID 220):

Session 4(SID 116):

这里我们看到,对父表的update阻塞了对其他会话对父表insert时pk的值=updae父表的pk的值的会话。 这个我们可以再做一个测试:

测试7,新建两个表,一个有pk,一个无pk,然后做同样的update和insert操作:

无pk的表:

这测试不会有任何问题。

现在我们改为带有pk的表:

SESSION 1:

SESSION 2:

也就是说,对存在pk的表来说,无论有没有子表,update pk的操作会同时阻塞对该表做insert操作中那些pk跟update语句更改前、后两个值相关的会话 比如update LUNAR2 set deptno =3 WHERE DEPTNO=2,就会阻塞所有insert deptno=2和deptno=3的会话

至此,你是不是对enq: TM – contention的等待事件了解更深了呢

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-09-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Vamei实验室

协议森林05 我尽力 (IP协议详解)

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。 在粗略了解了IP接力和IP地址后,我们再反过来,看一看IP...

2029
来自专栏SDNLAB

DragonFlow与OVN

DragonFlow和OVN是比较前沿的Neutron子项目了,这一节我们就来看看Neutron的这两个后起之秀。 ======================...

4448
来自专栏MYSQL轻松学

记一次硬件问题导致IO较高分析

通常遇到此问题可能原因 第一、并发较大刷磁盘频繁 一般此问题不会造成io util 90%以上。如果事物较大或者并发较大,slow log会有记录,我们...

4186
来自专栏架构师小秘圈

Storm极简教程

八卦 Storm的作者是Nathan Marz,Nathan Marz在BackType公司工作的时候有了Storm的点子并独自一人实现了Storm。在201...

3405
来自专栏Laoqi's Linux运维专列

MySQL“延迟”主从复制

1345
来自专栏程序员互动联盟

【计算机基本概念】中央处理器

中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control U...

3325
来自专栏杨建荣的学习笔记

解析实时的DB time过程分析(r6笔记第35天)

在我们查看awr报告的时候总是会有一个关键指标需要注意,那就是DB time,这个指标一般都是通过awr报告来看到的。 比如我们得到的awr报告头部显示的下面的...

3257
来自专栏杨建荣的学习笔记

一种迁移式升级的方案考虑 (r7笔记第90天)

目前遇到了一个问题,目前的是一主两备的环境,但是主库,备库中的存储空间都不足。而且硬件环境相对要老旧一些。想扩容难,系统版本老旧想升级也难。 ...

2797
来自专栏腾讯Bugly的专栏

《广研Android卡顿监控系统》

实现背景 应用的使用流畅度,是衡量用户体验的重要标准之一。Android 由于机型配置和系统的不同,项目复杂App场景丰富,代码多人参与迭代历史较久,代码可能会...

6294
来自专栏CSDN技术头条

【问底】许鹏:使用Spark+Cassandra打造高性能数据分析平台(一)

【导读】笔者(许鹏)看Spark源码的时间不长,记笔记的初衷只是为了不至于日后遗忘。在源码阅读的过程中秉持着一种非常简单的思维模式,就是努力去寻找一条贯穿全局的...

2338

扫描关注云+社区