暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
【12c-优化篇】Oracle锁.pdf
240
6页
0次
2022-11-09
5墨值下载
根据锁的不同分类方式,下面对不同类型的锁进行讨论。
1锁模式
Oracle数据库自动化使用最低的限制级别提供最高程度的并发。在限制较少的情况下,有
更多用户可以访问活动的数据,相反,在限制较多的情况下,事务在获得锁的时候会有更多
的限制。Oracle数据库在多用户数据库中使用以下两种锁模式.。
1.1排他锁
这种模式防止相关的资源被共享,当一个事务修改行数据时,这个事务获得一个行数据的排
他锁,直到这个事务结束,排他锁才被释放,其他事务才能继续修改这个行数据。
1.2共享锁
这种模式允许相关的资源被共享,多个事务能同时访问这些数据,共享模式保持共享锁防止
一个需要排他锁的事务并行访问,在相同的资源上,可以有多个事务获得共享锁。
假定一个事务执行select...forupdate语句查询单一的表行,事务将获得一个排他的行锁
和一个共享的表锁,这个行锁不阻止其他会话排他锁定该行以外的其他行,同时表上的共享
锁防止其他会话修改表的结构。数据库在保证数据结构不发生变化的情况下,允许尽可能多
事务并行操作表的数据。
2锁类型
锁类型分为DML锁、DDL锁、系统锁、手动锁和用户自定义锁,在使用过程中最常见的是
DML锁,下面分别讨论这几种类型的锁。
2.1DML锁
DML锁是在执行DML语句的时候产生的锁,是为了保证数据的一致性和数据表结构不发生
改变的一种锁类型,用于防止多个事务对相同数据的DML操作和对表的DDL操作破坏数据
或数据结构。DML语句自动获得表锁(TM)和行锁(TX)。
1)表锁(TM):当一个表通过insert、update、delete、merge、select...forupdate
子句或locktable语句修改之前,事务首先获取表锁。DML操作要求保留表锁,防止DDL操
作与事务冲突;
2)行锁(TX):是Oracle限制最大的锁,是排他锁,是表行上的锁。一个事务执行
insert、update、delete、merge或select...forupdate语句为修改的行获得一个行锁。
行锁跟随事务一致存在,直到事务提交或回滚。行锁使用队列机制主要为了防止两个事务修
改相同的行,数据库一直以独占模式锁定这些行。行锁提供很好的细粒度,由此提供了最好
的并发性能。
如下表示,TM根据执行不同的SQL语句和不同的情况,又可以在排他锁和共享锁的基础上
细分为6种模式。
DML表锁6中模式
锁模式号 DML表锁模式 描述
1 NULL锁 空锁
2
行共享(RS)或者子共享表锁
(SS)
事务保持该锁在锁定行的表上,一个行共享锁是最低
限制模式的表锁,提供表最高程度的并行
3
行排它表锁(RX)或子排它表锁
(SX)
通常是事务更新表或执行select...forupdate产生的
表锁,一个SX锁允许其他事务在相同的表中并行查
询、插入、更新、删除或者锁定行。因此,SX锁允
许多个事务在相同的表同时获取SX和SS锁
4 共享表锁(S) 该锁是通过事务保持的,多个事务可能并行地获取S
锁,保持这个锁并不能确保事务能修改这个表。只允
许其他事务查询相同的表,只有获得这个锁模式的事
务能更新数据
5
共享行排它锁(SRX)或共享子排
它锁(SSX)
该锁是通过事务保持的,比S锁有更多限制,只允许
表有一个SSX类型的锁存在,允许其他事务以SS模式
锁定表,不允许其他事务更新表
6 排它表锁(X)
该锁是最大限制的表锁,禁止其他事务执行任何类型
的DML语句以及在表上放置任何其他类型的锁,允
许其他事务查询数据
锁模式编号对应v$lock的lmode和request字段,锁模式编号3和4是最常见的两个模式的表
锁。在表上执行update语句在表上产生锁模式为3的表锁,在表上执行createindex或alter
index...rebuild语句产生锁模式为4的表锁,模式为3和模式为4的表锁可以同时存在于表
上,但update操作和createindex、alterindex...rebuild操作是不兼容的。
of 6
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜