数据库原理与应用教程―SQLServer.ppt

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 12 章 事务与并发控制 ? 12.4.1 并发带来的问题 ? (2) 脏读 :指当一个事务正在访问数据,并且对数据进行 了修改,而这种修改还没有提交到数据库中,这时,另 外一个事务也访问这个数据,然后使用了这个数据。因 为这个数据是还没有提交的数据,那么另外一个事务读 到的这个数据是“脏数据”,依据“脏数据”所做的操 作可能是不正确的。 ? 例如:事务 T1 读取某表中数据 A=20 ,并修改 A=A-1 ,写 回数据库,事务 T2 读取 A=19 ,事务 T1 回滚了前面的操 作,事务 T2 也修改 A=A-1 ;最终结果 A=18, 事务 T2 读取 的就是“脏数据”。 第 12 章 事务与并发控制 ? 12.4.1 并发带来的问题 ? ( 3) 不可重复读 :指在一个事务内,多次读同一数据。在 这个事务还没有结束时,另外一个事务也访问该同一数 据。那么,在第一个事务中的两次读数据之间,由于第 二个事务的修改,那么第一个事务两次读到的数据可能 是不一样的。这样就发生了在一个事务内两次读到的数 据是不一样的,因此称为是不可重复读。 ? 例如:事务 T1 读取某表中数据 A=20 ,并修改 A=A-1 ,写 回数据库,事务 T2 读取 A=19 ,事务 T1 回滚了前面的操 作,事务 T2 也修改 A=A-1 ;最终结果 A=18, 事务 T2 读取 的就是“脏数据”。 第 12 章 事务与并发控制 ? 12.4.1 并发带来的问题 ? (4) 幻读 :与不可重复读相似,是指当事务不是独立执行 时发生的一种现象。例如,第一个事务对一个表中的数 据进行了修改,这种修改涉及到表中的全部数据行。同 时,第二个事务也修改这个表中的数据,这种修改是向 表中插入一行新数据。那么,以后就会发生操作第一个 事务的用户发现表中还有没有修改的数据行,就好像发 生了幻觉一样。当对某条记录执行插入或删除操作而该 记录属于某个事务正在读取的行的范围时,会发生幻读 问题。 第 12 章 事务与并发控制 ? 12.4.2 锁的粒度 ? SQL Server 使用了(三层)锁协议,从而有效的控制并 发操作可能产生的丢失更新、读“脏”数据、不可重复 读等错误。 ? SQL Server 具有多种不同粒度的锁,允许事务锁定不同 的资源,并能自动使用与任务相对应的等级锁来锁定资 源对象,以使锁的成本最小化。 ? (1) 行级锁 ? 表中的行是锁定的最小空间资源。行级锁是指事务操作 过程中,锁定一行或若干行数据。 ? (2) 页和页级锁 ? 在 SQL Server 中,除行外的最小数据单位是页。一个页 有 8KB ,所有的数据、日志和索引都放在页上。为了管 理方便,表中的行不能跨页存放,一行的数据必须在同 一个页上。 ? 页级锁是指在事务的操作过程中,无论事务处理多少数 据,每一次都锁定一页。 ? (3) 簇和簇级锁 ? 页之上的空间管理单位是簇,一个簇有 8 个连续的页。 ? 簇级锁指事务占用一个簇,这个簇不能被其他事务占用 。簇级锁是一种特殊类型的锁,只用在一些特殊的情况 下。例如在创建数据库和表时,系统用簇级锁分配物理 空间。由于系统是按照簇分配空间的,系统分配空间时 使用簇级锁,可防止其他事务同时使用一个簇。 ? (4) 表级锁 ? 表级锁是一种主要的锁。表级锁是指事务在操纵某一个表的数据时 锁定了这些数据所在的整个表,其他事务不能访问该表中的数据。 当事务处理的数量比较大时,一般使用表级锁。 ? (5) 数据库级锁 ? 数据库级锁是指锁定整个数据库,防止其他任何用户或者事务对锁 定的数据库进行访问。 ? 这种锁的等级最高,因为它控制整个数据库的操作。数据库级锁是 一种非常特殊的锁,它只用于数据库的恢复操作。只要对数据库进 行恢复操作,就需要将数据库设置为单用户模式,防止其他用户对 该数据库进行各种操作。 行 页 簇 表 数据库 第 12 章 事务与并发控制 ? 12.4.3 锁的类型 ? 数据库引擎使用不同类型的锁锁定资源,这些锁确定了并 发事务访问资源的方式。 ? SQL Server 2005 中常见的锁有以下几种: ? (1) 共享锁( Shared Lock ) ? 共享 (S) 锁允许并发事务读取( SELECT )一个资源。资 源上存在共享 (S) 锁时,任何其它事务

文档评论(0)

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

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

1亿VIP精品文档

相关文档