数据库并发处理中“锁”研究与应用.docVIP

数据库并发处理中“锁”研究与应用.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库并发处理中“锁”研究与应用

数据库并发处理中“锁”研究与应用   摘要:本文阐述了数据库并发处理的关键方法,详细分析和研究了数据库并发操作产生数据不一致问题的原因,以及独占锁、共享锁和更新锁的基本特征和应用,重点讨论了产生死锁的原因,从使用者角度对如何有效提高数据的并发处理和共享效率提出了一些建议。   关键词:并发处理;不一致问题;锁;效率   中图分类号:TP311.13文献标识码:A文章编号:1007-9599 (2012) 04-0000-02   从系统集成角度分析,要想全面提高数据库的处理速度,只提高计算机的物理速度是不够的,还必须充分考虑数据库的并发处理问题。其中数据库的安全性和完整性是至关重要的两个方面。数据库的安全性就是要保证数据库中数据的安全,防止其他用户或程序随意篡改数据库中的数据,确保数据安全。完整性是保证数据库中的数据切实有效,防止操作过程中一些错误的发生。在数据库处理过程中,多个用户同时对数据库进行并发操作时会带来数据不一致问题,例如:丢失更新、不可重复读、“脏”读等。   一、丢失更新   对于丢失更新的问题,我们来分析一个大型超市销售结算的例子:   甲结算台(甲事务)读出某商品的剩余数量为S1(假设S1=100)。同一时刻,乙结算台(乙事务)读出同一种商品的剩余数量为S2(S2也为100)。甲结算台卖出一件该商品,修改商品剩余数量(S1←S1-1),所以S1为99,把S1写回数据库。乙结算台也卖出一件该商品,之后也修改剩余数量(S2←S2-1),所以S2也为99,把S2写回数据库。结果是:实际超市共卖出两件商品,数据库中剩余商品数量却只减少1件。分析其原因主要是两个事务t1和t2同时读入(并发操作)同一数据并修改,t2提交的结果破坏了t1提交的结果,导致t1的修改被丢失。数据的删除同样也涉及到此类并发处理问题。   二、不可重复读   不可重复读是指事务t1读取数据后,事务t2执行更新操作,使t1无法再现前一次读取结果,而造成前后两次所读内容不一致错误,主要包括以下三种情况:   (1)并发操作中,事务t1读取某一数据后,事务t2对其做了修改,当事务1再次读该数据时,却得到与前一次不同的值。   (2)并发操作中,事务t1按一定条件对数据库进行查询处理,获得记录集S1,此时,事务t2删除了其中部分或全部记录,当t1再次按相同条件查询数据库时,获得记录集S2,结果是S2丢失了S1中的部分或全部记录。   (3)事务t1按一定条件从数据库中读取某些数据记录后,事务t2插入了一些记录,当t1再次按相同条件读取数据时,发现多出了一些记录。   三、“脏”读   读“脏”数据是指事务t1修改某一数据,并将其写回到磁盘,事务t2读取同一数据后,t1由于某种原因被撤消,这时t1已修改过的数据恢复原值,t2读到的数据就与数据库中的数据不一致,则t2读到的数据就为“脏”数据,即不正确的数据。   并发操作破坏了事务的隔离性是产生上述三种数据不一致情况的主要原因。并发控制就是要用正确合理的方式调度并发操作,使一个事务的执行不受其它事务的干扰,近而避免造成数据的不一致性。事务准备接受不一致数据的级别称为隔离级别。隔离级别是一个事务必须与其它事务进行隔离的程度。较高的隔离级别可以确保数据的正确性,但可能对并发产生负面影响。相反,较低的隔离级别可以增加并发,但代价是降低数据的正确性。事务隔离级别是并发控制的整体解决方案,其实际上是综合利用各种类型的锁和行版本控制,来解决并发问题。   锁是进行并发控制的主要方法,是多个用户同时操作同一个数据对象而不发生数据不一致错误的重要保障。从数据库系统的角度来看,锁分为独占锁(即排它锁)、共享锁和更新锁。   1.共享锁 (Share Locks) ,简称“S锁”, 用于不修改数据的操作,例如SELECT操作。共享锁允许并发事务读取同一个资源,若资源上存在共享锁,则其它事务就不能对该资料进行任何修改。读取数据之后,便立即释放资源上的共享锁。   2.更新锁(Update Locks) ,简称“U锁”,读取表时使用更新锁,而不使用共享锁,并将锁一直保留到语句或事务的结束。更新锁的优点是允许读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。当用更新锁来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改。   3.排它锁(eXclusive lock),简称“X锁”,用于数据修改操作,其它事务不能读取或修改排它锁锁定的数据。例如 INSERT、UPDATE 或DELETE,确保不会同时将同一资源进行多重更新。   共享锁到排它锁的转换必须等待一段时间,因为一个事务的排它锁与其它

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档