DB2和-Oracle的并发控制(锁)比较

DB2和-Oracle的并发控制(锁)比较

ID:42424858

大小:409.26 KB

页数:29页

时间:2019-09-14

DB2和-Oracle的并发控制(锁)比较_第1页
DB2和-Oracle的并发控制(锁)比较_第2页
DB2和-Oracle的并发控制(锁)比较_第3页
DB2和-Oracle的并发控制(锁)比较_第4页
DB2和-Oracle的并发控制(锁)比较_第5页
资源描述:

《DB2和-Oracle的并发控制(锁)比较》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1引言在关系数据库(DB2zOracle,Sybase,Informix和SQLServer)最小的恢复和交易单位为一个事务(Transactions),事务具有ACID(原子性,一致性,隔离性和永久性)特征。关系数据库为了确保并发用户在存取同一数据库对象时的正确性(即无丢失更新、可重复读、不读芻F数据,无”幻像”读),数据库中引入了并发(锁)机制。基本的锁类型有两种:排它锁(Exclusivelocks记为X锁)和共享锁(Sharelocks记为S锁)。排它锁:若事务T对数据D加X锁,则其它任何事务都不能再对D加但可类型的锁”直至T释放D上的X锁;一般要求在修改数据前要向该数据加排它锁,

2、所以排它锁又称为写锁。共享锁:若事务T对数据D加S锁,则其它事务只能对D加S锁,而不能加X锁,直至T释放D上的S锁;一般要求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。2DB2多粒度封锁机制介绍2.1锁的对象DB2支持对表空间、表、行和索弓I加锁(大型机上的数据库还可以支持对数据页加锁)来保证数据库的并发完整性。不过在考虑用户应用程序的并发性的问题上,通常并不检查用于表空间和索弓I的锁。该类问题分析的焦点在于表锁和行锁。2.2锁的策略DB2可以只对表进行加锁,也可以对表和表中的行进行加锁。如果只对表进行加锁,贝懐中所有的行都受到同等程度的影响。如果加锁的范围针对于表及下属的行,则

3、在对表加锁后,相应的数据行上还要加锁。究竟应用程序是对表加行锁还是同时加表锁和行锁,是由应用程序执行的命令和系统的隔离级别确定。2.2.1DB2表锁的模式DB2在表一级加锁可以使用以下加锁方式:表一:DB2数据库表锁的模式名称缩写全名描述IN无意El锁(IntenetNone)不需要行锁该锁的拥有者可以读表中的任何数据,包括苴他爭务尚未提交的数据,但不能对表中的数据进行更改。IS意国共享锁(IntentShare)需要行锁配合该锁的拥有者在拥有相应行的上的s锁时可以读取该行的数据。但不能对表中的数据进行更改。IX意81排它锁(Intentexclusive)需要行锁配合该锁的拥有者在拥有相

4、应行的X锁时可以更改该行的数据。SIX共享携意图排它锁(SharewithIntentexclusive)需要行锁配合锁的拥有者可以读表中的任何数据,如果在相应的行上能够枝得X锁,则可以修改该行。SIX锁的枝得比较特殊'它是在应用程序已经拥有IX锁的情况下谙求S锁或者是在应用程序已经拥有S锁的情况下谙求IX锁时生成的S共孚锁(Share)不需要行锁配合锁的拥有者可以读表中的任何数据「如果表上被加上s锁,该表中的数据就只能被读取,不能被改变。U更新锁(Update)不需要行锁配合锁的拥有者可以读表中的任何数据,如果在升级到X锁之后'可以更改表中的任何数据•该锁是处于等待对数据进行更改的一种中

5、间状态。X排它锁(exclusive)不需要行锁配合锁的拥有者可以读取或更改表中的任何数据O如果对表加上X锁,除了未提交读程序,苴他应用程序都不能对该表进行存取。Z超级排它锁(SuperExclusive)不需要行锁配合该锁不是通过应用程序中的DML语言来生成的。—般是通过对表进行删除(Drop)和转换(Alter)操作或创建和删除索引而枝得的。如果对表上加上Z锁,其他应用程序'包括未提交读程序都不能对该表进行存取。F面对几种表锁的模式进一步加以阐述:IS、IX、SIX方式用于表一级并需要行锁配合,他们可以阻止其他应用程序对该表加上排它锁。如果一个应用程序获得某表的IS锁,该应用程序可获得

6、某一行上的S锁,用于只读操作,同时其他应用程序也可以读取该行,或是对表中的其他行进行更改。■如果一个应用程序获得某表的IX锁,该应用程序可获得某一行上的X锁,用于更改操作,同时其他应用程序可以读取或更改表中的其他行。.如果一个应用程序获得某表的six锁,该应用程序可以获得某一行上的X锁,用于更改操作,同时其他应用程序只能对表中其他行进行只读操作。S、U、X和Z方式用于表一级,但并不需要行锁配合,是比较严格的表加锁策略。•如果一个应用程序得到某表的S锁。该应用程序可以读表中的任何数据。同时它允许其他应用程序获得该表上的只读请求锁。如果有应用程序需要更改读该表上的数据,必须等s锁被释放。.如果

7、一个应用程序得到某表的u锁,该应用程序可以读表中的任何数据,并最终可以通过获得表上的X锁来得到对表中任何数据的修改权。其他应用程序只能读取该表中的数据。U锁与S锁的区别主要在于更改的意图上U锁的设计主要是为了避免两个应用程序在拥有S锁的情况下同时申请X锁而造成死锁的。■如果一个应用程序得到某表上的X锁,该应用程序可以读或修改表中的任何数据。其他应用程序不能对该表进行读或者更改操作。•如果一个应用程序得到某表上的z锁,该应

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

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

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