oracle多粒度锁机制介绍

oracle多粒度锁机制介绍

ID:32726673

大小:64.21 KB

页数:6页

时间:2019-02-15

oracle多粒度锁机制介绍_第1页
oracle多粒度锁机制介绍_第2页
oracle多粒度锁机制介绍_第3页
oracle多粒度锁机制介绍_第4页
oracle多粒度锁机制介绍_第5页
资源描述:

《oracle多粒度锁机制介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Oracle多粒度锁机制介绍根据保护对象的不同,Oracle数据库锁可以分为以下儿大类:(1)DMLlock(datalocks,数据锁):用于保护数据的完整性;(2)DDLlock(dictionarylocks,字典锁):用于保护数据库对象的结构(例如表、视图、索引的结构定义);(3)Internallocks和latches(内部锁与闩):保护内部数据库结构;(4)Distributedlocks(分布式锁):用于OPS(并行服务器)中;(5)PCMlocks(并行高速缓存管理锁):用于OPS(并行服务器)中。

2、在Oracle中最主要的锁是DML(也可称为dalalocks,数据锁)锁。从封锁粒度(封锁对象的大小)的角度看,OracleDML锁共有两个层次,即行级锁和表级锁。3.1Oracle的TX锁(行级锁、事务锁)许多对Oracle不太了解的技术人员可能会以为每一个TX锁代表一条被封锁的数据行,其实不然。TX的本义是Transaction(事务),当一个事务第一次执行数据更改(Insert、Update>Delete)或使用SELECT-FORUPDATE语句进行查询时,它即获得一个TX(事务)锁,直至该事务结束(执行C

3、OMMIT或ROLLBACK操作)时,该锁才被释放。所以,一个TX锁,可以对应多个被该事务锁定的数据行(在我们用的时候多是启动一个事务,然后SELECT-FORUPDATENOWATT)o在0racle的每行数据上,都有一个标志位来表示该行数据是否被锁定。Oracle不像DB2那样,建立一个链表来维护每一行被加锁的数据,这样就大大减小了行级锁的维护开销,也在很大程度上避免了类似DB2使用行级锁时经常发生的锁数量不够而进行锁升级的情况。数据行上的锁标志一旦被置位,就表明该行数据被加X锁,Oracle在数据行上没有S锁。

4、3.2TM锁(表级锁)3.2.1意向锁的引出表是由行组成的,当我们向某个表加锁时,一方而需要检查该锁的申请是否与原有的表级锁相容;另一方面,述要检查该锁是否与表中的毎一行上的锁相容。比如一个事务要在一个表上加S锁,如果表中的一行己被另外的事务加了X锁,那么该锁的审请也应被阻塞。如果表中的数据很多,逐行检查锁标志的开销将很大,系统的性能将会受到影响。为了解决这个问题,可以在表级引入新的锁类型來表示其所属行的加锁情况,这就引出了〃意向锁〃的概念。意向锁的含义是如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;对任

5、一结点加锁时,必须先对它的上层结点加意向锁。如:对表中的任一行加锁时,必须先对它所在的表加意向锁,然后再对该行加锁。这样一来,事务对表加锁时,就不再需要检查表屮每行记录的锁标志位了,系统效率得以大大提高。3.2.2意向锁的类型由两种基本的锁类型(S锁、X锁),可以自然地派生出两种意向锁:意向共享锁(IntentShareLock,简称IS锁):如果要对一个数据库对象加S锁,首先要对其上级结点加IS锁,表示它的后裔结点拟(意向)加S锁;意向排它锁(IntentExclusiveLock,简称IX锁):如果要对一个数据库

6、对象加X锁,首先要对其上级结点加IX锁,表示它的后裔结点拟(意向)加X锁。另外,基本的锁类型(S、X)与意向锁类型(1S、IX)之间述可以组合出新的锁类型,理论上可以组合出4种,B

7、J:S+IS,S+IX,X+IS,X+IX,但稍加分析不难看出,实际上只有S+IX有新的意义,其它三种组合都没有使锁的强度得到提高(即:S+IS二S,X+IS二X,X+IX二X,这里的〃二〃指锁的强度相同)。所谓锁的强度是指对其它锁的排斥程度。这样我们又可以引入一种新的锁的类型:共享意向排它锁(SharedIntentExclusiveL

8、ock,简称SIX锁):如果对一个数据库对象加SIX锁,表示对它加S锁,再加IX锁,即SIX二S+IX。例如:事务对某个表加SIX锁,则表示该事务要读整个表(所以要对该表加S锁),同吋会更新个别行(所以要对该表加IX锁)。这样数据库对象上所加的锁类型就可能有5种:即S、X、1S、IX、SIXo具有意向锁的多粒度封锁方法中任意事务T要对一个数据库对象加锁,必须先对它的上层结点加意向锁。申请封锁时应按自上而下的次序进行;释放封锁时则应按自下而上的次序进行;具有意向锁的多粒度封锁方法提高了系统的并发度,减少了加锁和解锁的开

9、销。3.3Oracle的TM锁(表级锁)Oracle的DML锁(数据锁)正是采用了上面提到的多粒度封锁方法,其行级锁虽然只有一种(即X锁),但其TM锁(表级锁)类型共有5种,分别称为共享锁(S锁)、排它锁(X锁)、行级共享锁(RS锁)、行级排它锁(RX锁)、共享行级排它锁(SRX锁),与上面提到的S、X、IS、IX、SIX相对应。需要注意的是,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。