sqltp11并发控制及并发机制.pptVIP

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

本章目标 掌握事务的概念:是一个不可分割的工作逻辑单元。 掌握事务的特性:原子性、一致性、隔离性、持久性。 了解事务的分类:显式事务、隐式事务、自动提交事务。 掌握T-SQL的事务管理语句: BEGIN TRANSACTION COMMIT [TRANSACTION] ROLLBACK [TRANSACTION] 了解并发控制的主要机制:事务和封锁。 了解封锁类型:排它锁、共享锁。 在多用户和网络环境下,数据库是一个共享资源,多个用户或应用程序同时对数据库的同一数据对象进行读写操作,这种现象称为对数据库的并发操作。对并发操作进行的控制称为并发控制。在DBMS中并发控制是通过事务和封锁机制实现的。 11.1 事务及并发控制的基本概念 事务的概念 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。 11.1 事务及并发控制的基本概念 事务的特性 原子性 事务中包括的诸操作要么都做,要么都不做。 一致性 事务执行的结果必须使数据库处于一个一致性状态。当数据库中只包含成功事务提交的结果时,就说数据库处于一致性状态。 隔离性 一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 持续性(永久性) 持续性指一个事务一旦提交,它对数据库中数据的改变就是永久性的。 并发操作可能产生的问题 丢失更新 假设某产品库存量为50,现在购入该产品100个,执行入库操作,库存量加100;用掉40个,执行出库操作,库存量减40。分别用T1和T2表示入库和出库操作任务。 并发操作可能产生的问题 读“脏数据” 当T1和T2并发执行时,在T1对数据库更新的结果没有提交之前,T2使用了T1的结果,而在T2操作之后T1又回滚,这时引起的错误是T2读取了T1的“脏数据”。 并发操作可能产生的问题 不可重复读 当T1读取数据A后,T2执行了对A的更新,当T1 再次读取数据A(希望与第一次是相同的值)时,得到的数据与前一次不同,这时引起的错误称为“不可重复读”。 11.2 封锁机制 封锁及锁的类型 封锁机制是并发控制的主要手段。 封锁具有3个环节:申请加锁、获得锁和释放锁。 基本的封锁类型有两种: 排它锁(X锁) 一旦事务T对数据对象A加上排它锁,则只允许T读取和修改A,其他任何事务既不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁为止。 共享锁(S锁) 如果事务T对数据对象A加上共享锁,其他事务对A只能再加S锁,不能加X锁,直到事务T释放A上的S锁为止。 11.2 封锁机制 封锁协议 对封锁方式规定不同的规则,形成了各种不同的封锁协议。 11.2 封锁机制 11.2 封锁机制 封锁出现的问题及解决方法 活锁 如果事务T1封锁了数据R,T2事务又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的要求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,……,T2有可能永远等待。这种在多个事务请求对同一数据封锁时,使某一用户总是处于等待的状况称为活锁。 解决活锁问题的方法是采用先来先服务。即对要求封锁数据的事务排队,使前面的事务先获得数据的封锁权。 数据库安全控制的一般方法 死锁 如果事务T1和T2都需要数据Rl和R2,操作时Tl封锁了数据R1,T2封锁了数据R2;然后T1又请求封锁R2,T2又请求封锁Rl;因T2已封锁了R2,故T1等待T2释放R2上的锁。同理,因T1已封锁了R1,故T2等待T1释放R1上的锁。由于Tl和T2都没有获得全部需要的数据,所以它们不会结束,只能继续等待。这种多事务交错等待的僵持局面称为死锁。 数据库中解决死锁问题主要有两类方法:一类方法是采用一定措施来预防死锁的发生;另一类方法是允许发生死锁,然后采用一定手段定期诊断系统中有无死锁,若有则解除之。 数据库安全控制的一般方法 封锁的粒度 封锁粒度是指封锁对象的大小。封锁对象可以是逻辑单元,也可以是物理单元。 以关系数据库为例,封锁对象可以是属性值、属性值的集合、元组、关系、直至整个数据库;也可以是一些物理单元,例如页、块等。封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越小,并发度越高,系统开销也越大;封锁的粒度越大,并发度越低,系统开销也越小。 SQL Server的并发控制机制 事务和锁是并发控制的主要机制,S

文档评论(0)

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

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

1亿VIP精品文档

相关文档