网站大量收购独家精品文档,联系QQ:2885784924

SQL Server 课件-第10章 数据库并发控制及SQL Server的并发控制机制汇.ppt

SQL Server 课件-第10章 数据库并发控制及SQL Server的并发控制机制汇.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL Server 课件-第10章 数据库并发控制及SQL Server的并发控制机制汇

10.1 事务及并发控制的基本概念 10.2 封锁机制 10.3 SQL Server的并发控制机制 10.1 事务及并发控制的基本概念 10.1.1 事务的概念 所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。 事务的开始与结束可以由用户显式定义。如果用户没有显式地定义事务,则由DBMS按默认自动划分事务。 在SQL语言中,定义事务的语句有三条: BEGINTRANSACTION; 事务通常是以BEGINTRANSACTION开始, COMMIT; COMMIT的作用是提交事务的所有操作,事务提交是将事务中所有对数据的更新写回到磁盘上的物理数据库中去,事务正常结束。 ROLLBACK ; ROLLBACK的作用是回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤消,回滚到事务开始时的状态。 10.1.2 事务的特性 事务具有4个特性,即原子性、一致性、隔离性和持续性。 原子性(Atomicity) 事务中包括的诸操作要么都做,要么都不做。也就是说,事务是作为一个整体单位被处理,不可以被分割。 一致性(Consistency) 事务执行的结果必须使数据库处于一个一致性状态。当数据库中只包含成功事务提交的结果时,就说数据库处于一致性状态。 隔离性(1solation) 一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 持续性(Durability) 持续性也称永久性(Permanence)。持续性指一个事务一旦提交,它对数据库中数据的改变就是永久性的,接下来的其他操作或故障不应该对其执行结果有任何影响。 10.1.3 并发操作可能产生的问题 并发操作不加以限制,会产生数据不一致性问题,这种问题共有三类。 丢失更新 假设某产品库存量为50,现在购入该产品100个,执行入库操作,库存量加100;用掉40个,执行出库操作,库存量减40。分别用T1和T2表示入库和出库操作任务。 例如,同时发生入库(T1)和出库(T2)操作,这就形成并发操作。T1读取库存后,T2也读取了同一个库存;T1修改库存,回写更新后的值;T2修改库存,也回写更新后的值。此时库存为T2回写的值,T1对库存的更新丢失。如表10.1所示T1和T2的并发操作执行顺序,发生了“丢失更新”错误。 读“脏数据” 当T1和T2并发执行时,在T1对数据库更新的结果没有提交之前,T2使用了T1的结果,而在T2操作之后T1又回滚,这时引起的错误是T2读取了T1的“脏数据”。 表10.2 发生读“脏数据”的过程 不可重复读 当T1读取数据A后,T2执行了对A的更新,当T1 再次读取数据A(希望与第一次是相同的值)时,得到的数据与前一次不同,这时引起的错误称为“不可重复读”。 表10.3 发生“不可重复读”的过程 10.2 封锁机制 10.2.1 封锁及锁的类型 封锁机制是并发控制的主要手段。封锁具有3个环节:第一个环节是申请加锁;第二个环节是获得锁;第三个环节是释放锁。为了达到封锁的目的,在使用时事务应选择合适的锁,并要遵从一定的封锁协议。 基本的封锁类型有两种:排它锁(Exclusive Locks,简称X锁)和共享锁(Share Locks,简称S锁)。 排它锁 排它锁也称为独占锁或写锁。一旦事务T对数据对象A加上排它锁(X锁),则只允许T读取和修改A,其他任何事务既不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁为止。 共享锁 共享锁又称读锁。如果事务T对数据对象A加上共享锁(S锁),其他事务对A只能再加S锁,不能加X锁,直到事务T释放A上的S锁为止。 二级封锁协议 二级封锁协议是:事务T对要修改数据必须先加X锁,直到事务结束才释放X锁;对要读取的数据必须先加S锁,读完后即可释放S锁。 三级封锁协议 三级封锁协议是事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有锁。 由于三级封锁协议强调即使事务读完数据A之后也不释放S锁,从而使得别的事务无法更改数据A。三级封锁协议不但防止了丢失修改和不读“脏”数据,而且防止了不可重

文档评论(0)

liwenhua11 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档