暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片
oracle的TM锁、TX锁知识.pdf
140
8页
17次
2023-12-20
免费下载
oracle TM 锁、TX 锁知识
锁概念基础
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数
据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制
就可能会读取和存储不正确的数据,破坏数据库的一致性。
加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对
象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象
有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行
更新操作。
在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即 X 锁)和共
享锁Share Locks S 锁)当数据对象被加上排它锁时,其他的事务不
能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修
改。数据库利用这两 种基本的锁类型来对数据库的事务进行并发控制。
Oracle
数据库的锁类型
根据保护的对象不同,
Oracle
数据库锁可以分为以下几大类:
DML
data
locks
,数据锁),用于保护数据的完整性;
DDL
锁(
dictionary locks
,字典
锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩
internal locks and latches
),保护数据库的内部结构。
DML
锁的目的在于保证并发情况下的数据完整性,。在
Oracle
数据库中,
DML
锁主要包括
TM
锁和
TX
锁,其中
TM
锁称为表级锁,
TX
锁称为事务锁
或行级锁。
Oracle
执行
DML
语句时,系统自动在所要操作的表上申请
TM
类型的锁。
TM
锁获得后,系统再自动申请
TX
类型的锁,并将实际锁定的数据行的锁
标志位进行置位。 这样在事务加锁前检查
TX
锁相容性时就不用再逐行检查
锁标志,而只需检查
TM
锁模式的相容性即可,大大提高了系统的效率。
TM
锁包括了
SS
SX
S
X
等多种模式,在数据库中用
0
6
来表示。不同的
SQL
操作产生不同类型的
TM
锁。
在数据行上只有
X
锁(排他锁)。在
Oracle
数据库中,当一个事务首次发
起一个
DML
语句时就获得一个
TX
锁,该锁保持到事务被提交或回滚。当两
个或多个会话在表的同一条记录上执行
DML
语句时,第一个会话在该条记
录上加锁,其他的会话处于等待状态。当第一个会话提交后,
TX
锁被释放,
其他会话才可以加锁。
Oracle
数据库发生
TX
锁等待时,如果不及时处理常常会引起
Oracle
数据
库挂起,或导致死锁的发生,产生
ORA-60
的错误。这些现象都会对实际应
用产生极大的危害,如长时间未响应,大量事务失败等。
悲观封锁和乐观封锁
一、悲观封锁
锁在用户修改之前就发挥作用:
Select ..for updatenowait)
Select * from tab1 for update
用户发出这条命令之后,oracle 将会对返回集中的数据建立行级封锁,以防
止其他用户的修改。
如果此时其他用户对上面返回结果集的数据进行 dml ddl 操作都会返回一
个错误信息或发生阻塞。
1:对返回结果集进行 update delete 操作会发生阻塞。
2:对该表进行 ddl 操作将会报:Ora-00054:resource busy and acquire with
nowait specified.
原因分析
此时 Oracle 已经对返回的结果集上加了排它的行级锁,所有其他对这些数据
进行的修改或删除操作都必须等待这个锁的释放,产生的外在现象就是其他
的操作将发生阻塞,这个这个操作 commit rollback.
同样这个查询的事务将会对该表加表级锁,不允许对该表的任何 ddl 操作,
则将会报出 ora-00054 错误::resource busy and acquire with nowait
specified.
二、乐观封锁
乐观的认为数据在 select 出来到 update 进取并提交的这段时间数据不会被更
改。这里面有一种潜在的危险就是由于被选出的结果集并没有被锁定,是存
在一种可能被其他用户更改的可能。因此 Oracle 仍然建议是用悲观封锁,
为这样会更安全。
阻塞
定义:
当一个会话保持另一个会话正在请求的资源上的锁定时,就会发生阻塞。被
阻塞的会话将一直挂起,直到持有锁的会话放弃锁定的资源为止。4 个常见的
dml 语句会产生阻塞
INSERT
UPDATE
DELETE
SELECT…FOR UPDATE
INSERT
of 8
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

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