- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库系统和应用11
第十一章 并发控制; 并发操作:在多用户共享系统中,如果多个用户同时对同一个数据进行操作,称为并发操作。
DBMS的并发控制:负责协调并发事务的执行,保证数据库的完整性、同时避免用户得到不正确的数据。
DBMS的并发控制常用的方法有封锁法、时间印法和乐观控制法,商用的DBMS一般都采用封锁法。;11.1 并发控制概念;图11.1 三种数据不一致性;1. 丢失更新;2. 不可重复读;3. 读“脏”数据; 三类数据不一致产生的主要原因:并法操作破坏了事务的隔离性。
为了防止数据库数据的不一致性,必须要用正确的方式调度(控制)并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。
并发控制需要靠数据库的并发控制子系统来解决。 ; 通常,处理并发控制需要用到封锁(Locking)技术。
在事务要对数据库进行操作之前,首先对其操作的数据设置封锁,禁止其他事务再对该数据进行操作,当它对该数据操作完毕并解除对数据的封锁后,才允许其他事务对该数据进行操作。; 封锁:事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。; 基本的封锁类型有两种:
排它锁(Exclusive locks),简称X锁。
共享锁 (Share Locks),简称S锁。; 也称排它锁或写锁。如果事务T对数据对象R实现X封锁,则只允许T读取和修改R,其它任何事务都不能再对R加任何类型的锁,直到T释放R上的锁。
只有获准X封锁的事务,才能对被封锁的数据进行修改。 ; 我们使用 LOCK X(A)表示对所需数据对象A实现X封锁。如果X封锁没有获准,那么事务进入等待状态,等待封锁获准后,事务重新执行LOCK X(A)操作。
用UNLOCK (A)表示解除X封锁的操作。; 一个好的DBMS应该可以在同一时刻允许尽可能多的用户访问某个数据对象,即并发性。
在一些操作中,并不对数据库进行更新操作,只是读数据。这时若对数据加X锁,则降低了数据库的并发操作。因此需要引入新的锁机制。
当仅仅是读数据时,也可以让另外的操作读数据,增加并发度。;2. 共享锁(S封锁); 与X封锁类似,使用 LOCK S(A)表示对所需数据对象A实现S封锁。如果S封锁没有获准,那么事务进入等待状态,等待封锁获准后,事务重新执行LOCK S(A)操作。
用UNLOCK (A)表示解除S封锁的操作。;T1; 在运用X锁和S锁这两种基本封锁,对数据对象加锁时,还需要约定一些规则,例如应何时申请X锁或S锁、持锁时间、何时释放等。称这些规则为封锁协议(Locking Protocol)。对封锁方式规定不同的规则,就形成了各种不同级别的封锁协议。 ; 使用X封锁的规则称为PX协议。
PX协议的主要内容:任何企图更新记录R的事务必须先执行LOCK X(R)操作,以获得对该记录进行寻址的能力,并对它取得X封锁。如果未获得X封锁,那么此事务进入等待状态,一直到获准X封锁,事务才继续下去。 ;例:X封锁解决丢失更新问题。; 对于删除操作,PX协议同样适用。要删除一个记录,首先也要执行LOCK X(R)操作和READ操作后才能删除。
对于插入操作,不需要读记录。因此可以假定INSERT R本身也包含了对新插入记录R的X封锁。; 先看下面的例子。;时间; 图11.4中,事务T1做ROLLBACK操作时把事务T2更新丢失了。
上图11.4的情况是不可原谅的。因为此时数据库中的A值是错误的。为了避免数据库恢复时丢失更新,就不应该允许事务去使用一个未提交的修改。在图11.4中,第6步不允许事务T1执行UNLOCK操作,这样,事务T2就不能封锁和使用数据A了,也就不会更新了。
只有保证更新不再与数据库的恢复有关时(也就是事务结束了),才能解除封锁。因此对PX协议要加以修正,需引入PXC协议。;PXC协议由PX协议和下面一条规则组成:
X封锁必须保留到事务终点(COMMIT或ROLLBACK)。
因此,X封锁不是用UNLOCK操作解除的,在COMMIT和ROLLBACK的语义中应包含X封锁的解除。(也就是DML语句不能提供解除X封锁的操作); PXC协议能防止由ROLLBACK引起的更新丢失现象。
在图11.4中,事务T2在第7步将会进入等待状态,直到第14步时才做“LOCK X(A)”,这样就不会由于事务的撤消而丢失其他事务的更新。
PXC协议解决了丢失更新问题,
您可能关注的文档
最近下载
- 幼儿园:我上幼儿园,我做哥哥姐姐了,特别是我9月份主题前审议梳理.docx VIP
- 传感器选择题及答案.pdf VIP
- 药用植物学全套精品PPT课件597.pdf VIP
- 云南省昆明市盘龙区2022-2023学年七年级下学期期末数学试题(含答案).docx VIP
- 江苏执业药师继续教育《儿童特应性皮炎的药物治疗》习题答案.docx VIP
- 《医学美容实用技术》课件——第七章 美容文饰技术.pptx VIP
- 第四章_全国林业生态工程规划与布局(下).ppt VIP
- 一种具有减肥降脂功效的植物乳杆菌J26后生元冻干粉及其制备方法和应用.pdf VIP
- 第四章_全国林业生态工程规划与布局(上).ppt VIP
- 中班《我做哥哥姐姐了》主题后审议汇报.pptx VIP
文档评论(0)