- 1、本文档共60页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第06章 数据库保护第二
使用封锁机制解决未提交依赖问题 T1 T2 ① Xlock C R(C)=100 C←C*2 W(C)=200 ② Slock C 等待 ③ ROLLBACK 等待 (C恢复为100) 等待 Unlock C 等待 ④ 获得Slock C R(C)=100 ⑤ Commit C Unlock C 事务T1在对C进行修改之前,先对C加X锁,修改其值后写回磁盘 T2请求在C上加S锁,因T1已在C上加了X锁,T2只能等待 T1因某种原因被撤销,C恢复为原值100 T1释放C上的X锁后T2获得C上的S锁,读C=100。避免了T2读“脏”数据 不读“脏”数据 SQL Server中与封锁有关的命令 SQL Server的封锁操作是在相关语句的“WITH (table_hint)”子句中完成的。 该短语可以在SELECT、INSERT、UPDATE和DELETE等语句中指定表级锁定的方式和范围。 SQL Server中与封锁有关的命令 常用的封锁关键词有: TABLOCK:对表施行共享封锁,在读完数据后立刻释放封锁,此类封锁可以避免读“脏”数据,但不具有可重复读的特性。 HOLDLOCK:与TABLOCK一起使用,可将共享锁保留到事务完成,而不是在读完数据后立即释放锁,这样可以保证数据的可重复独特性。 NOLOCK:不进行封锁,此关键词仅应用于SELECT语句,这样可能会读取未提交事务的数据,即有可能发生“脏”读。 TABLOCKX:对表实施独占封锁。 UPDLOCK:对表中的指定元组实施更新封锁;这时其他事务可以对同一表中的其他元组也实施更新封锁,但是不允许对表实施共享封锁和独占封锁。 SQL Server中与封锁有关的命令 … DECLARE @d datetime, @t char(6), @s char(2), @n char(10) … BEGIN TRANSACTION SELECT @n=座位号 FROM R WITH (UPDLOCK) WHERE 日期 = @d AND 车次 = @t AND 座别 = @s AND 状态 IS NULL … IF … UPDATE R SET 状态 = Y WHERE 座位号 = @n AND 日期 = @d AND 车次 = @t AND 座别 = @s COMMIT TRANSACTION ELSE ROLLBACK TRANSACTION … 封锁粒度 封锁的对象可以是表、也可以是元组等,我们把封锁对象的大小称为封锁粒度(Granularity)。 封锁的对象可以是逻辑单元(如表和元组等),也可以是物理单元(如数据页和数据块等)。 数据库管理系统一般都具有多粒度锁定功能,允许一个事务锁定不同类型的资源。 封锁粒度 锁定在较小的粒度(例如行)可以增加并发操作的性能,但系统开销也较大。这是因为如果封锁的粒度小,则意味着需要的锁多,从而需要系统控制更多的锁。 锁定在较大的粒度(例如表)会降低操作的并发性,这是因为锁定整个表限制了其他事务对表中任意部分进行访问。封锁粒度大,则不需要太多的封锁,由于需要维护的锁较少,所以系统开销较低。 意向锁 为了降低封锁的成本,提高并发的性能,数据库管理系统还支持一种意向锁(Intention Lock)。 意向锁表示一种封锁意向,当需要在某些底层资源上(如元组)获取封锁时,可以先对高层资源(如表)实施意向锁。例如,在表级实施共享意向锁表示事务打算在表中的元组上实施共享锁,这样做可以防止另一个事务随后在同样的资源上获取排它锁。意向锁可以提高性能,因为系统仅在表级检查意向锁来确定事务是否可以安全地获取该表上的锁;而无须检查表中的每个元组上的锁,以确定事务是否可以锁定整个表。 意向锁 意向共享(IS) 意向排它(IX) 共享意向排它(SIX) 意向共享(IS) 通过在各资源上放置IS锁,表明事务的意向是读取层次结构中的部分(而不是全部)底层资源。 例如,对表实施IS锁,则意味着要对表中的某个(些)元组实施S锁; 或者说,当需要对表中的某个(些)元组实施S锁时,应该首先对表实施IS锁。 意向排它(IX) 通过在各资源上放置IX锁,表明事务的意向是修改层次结构中的部分(而不是全部)底层资源。 例如,对表实施IX锁,则意味着要对表中的某个(些)元组实施X锁; 或者说,当需要对表中的某个(些)元组实施X锁时,应该首先对表实施IX锁。 共享意向排它(SIX) 通过在各资源上放置SIX锁,表明事务的意向是读取层次结构中的全部底层资源并修改部分(而不是全部)底层资源。 SIX锁等同于加S锁、再加IX锁。 例如,对表实施SIX锁,则意味着要对表实施S锁,并对表中的某个(些)元组实施X锁; 或者说,当需要对表实施S锁,并对
您可能关注的文档
- 童话中反反复复的情节.ppt
- 竖笛演奏基础.ppt
- 童话的类型.ppt
- 立体纸粘画.ppt
- 竞争的意义 课件.pptx
- 端居 李商隐.ppt
- 章子怡惊艳着装演示及配音.pptx
- 端阳和重阳.pptx
- 端午市场活动规划.ppt
- 竹禅演示文稿.ppt
- 2020版 沪科技版 高中生物学 必修2 遗传与进化《第4章 生物的进化》大单元整体教学设计[2020课标].docx
- 情绪价值系列报告:春节消费抢先看-国证国际证券.docx
- 精品解析:北京市东直门中学2023-2024学年高二下学期3月阶段性考试(选考)物理试题(解析版).docx
- 2020版 沪科技版 高中生物学 必修2 遗传与进化《第4章 生物的进化》大单元整体教学设计[2020课标].pdf
- 2020版 沪科技版 高中生物学 选择性必修1 稳态与调节《第1章 人体的内环境和稳态》大单元整体教学设计[2020课标].pdf
- 2020版 沪科技版 高中生物学 选择性必修1 稳态与调节《第1章 人体的内环境和稳态》大单元整体教学设计[2020课标].docx
- 液冷盲插快接头发展研究报告-全球计算联盟.docx
- 精品解析:北京市东直门中学2023-2024学年高二下学期3月阶段性考试(选考)物理试题(原卷版).docx
- 精品解析:北京市东直门中学2024届高三考前练习数学试卷(解析版).docx
- 2020版 沪科技版 高中生物学 选择性必修1 稳态与调节《第2章 人体的神经调节》大单元整体教学设计[2020课标].docx
文档评论(0)