封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。以关系数据库为例,封锁对象可以是这样一些逻辑单元:属性值、属性值的集合、元组、关系、索引项、整个索引直至整个数据库;也可以是这样一些物理单元:页(数据页或索引页)、物理记录等。

封锁粒度与系统的并发度和并发控制的开销密切相关。直观地看,封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度就越小,系统开销也越小;反之,封锁的粒度越小,并发度越高,但系统开销也就越大。

一个系统中同时支持多种封锁粒度供不同的事务选择是比较理想的,这种封锁方法称为多粒度封锁。选择封锁粒度应该考虑封锁开销和并发度这两个因素。

  • 多粒度封锁

多粒度封锁,首先要定义多粒度树。多粒度树的根节点是整个数据库,表示最大的数据粒度。叶节点表示最小的数据粒度。

如下是一个三级粒度树。根节点为数据库,数据库的子节点为关系,关系的子节点为元组。

还可以定义四级粒度树,如数据库、数据分区、数据文件、数据记录。

多粒度封锁协议允许多粒度树中的每个节点被独立地加锁。对一个节点加锁意味着这个节点的所有后裔节点也被加以同样的类型。因此,在多粒度封锁中一个数据对象可能以两种方式封锁,显示封锁和隐式封锁。

显示封锁是应事务的要求直接加到数据对象上的锁;隐式封锁是该数据对象没有被独立加锁,是由于其上级节点加锁而使该数据对象也加上了锁。

多粒度封锁方法中,显式封锁和隐式封锁的效果是一样的,因此系统检查封锁冲突时不进要检查显示封锁还要检查隐式封锁。例如事务T要对关系R1加X锁,系统必须搜索其上级节点数据库、关系R1以及R1的下级节点,即R1中的每一个元组,上下搜索。如果其中某一个数据对象已经加了不相容锁,则T必须等待。

一般地,对某个数据对象加锁,系统要检查该数据对象上有无显式封锁与之冲突;再检查其所有上级节点,看本事务的显式封锁是否与该数据对象上的隐式封锁冲突;还要检查其所有下级节点,看他们的显式封锁是否与本事务的隐式封锁冲突。显然,这样的检查方法效率很低。为此人们引进了一种新型锁,称为意向锁。有了意向锁,数据库管理系统就无须逐个检查下一级节点的显式封锁。

  • 意向锁

意向锁的含义是如果对一个节点加意向锁,则说明该节点的下层节点正在被加锁;对任一节点加锁时,必须先对它的上层节点加意向锁。如:对任一元组加锁,必须先对它的数据库和关系加意向锁。

意向锁分为三种:意向共享锁(IS)、意向排他锁(IX)、共享意向排他锁(SIX)。

(1)意向共享锁(IS)

如果对一个数据对象加IS锁,表示它的后裔节点拟(意向)加S锁。例如事务T1要对R1中某个元组加S锁,则首先对关系R1和数据库加IS锁。

(2)意向排他锁(IX)

如果对一个数据对象加IX锁,表示它的后裔节点拟加X锁。例如事务T1要对R1中某个元组加X锁,则首先要对关系R1和数据库加IX锁。

(3)共享意向排他锁(SIX)

如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁。例如对某个表加SIX锁,则表示该事务要读整个表,同时会更新个别元组。

在具有意向锁的多粒度封锁方法中,任意事务T要对一个数据对象加锁,必须先对它的上层节点加意向锁。申请封锁时应该按自上而下的次序进行,释放封锁时则应该按自下而上的次序进行。

如:事务T1要对关系R1加S锁,则要首先对数据库加IS锁,检查数据库和R1是否已加了不相容的锁(X或IX)。不再需要搜索和检查R1中的元组是否加了不相容的锁(X)。

并发控制五(封锁的粒度)相关推荐

  1. (数据库系统概论|王珊)第十一章并发控制-第五、六、七节:并发调度的可串行性、两段锁协议和封锁的粒度

    文章目录 一:可串行化调度 二:冲突可串行化调度 (1)冲突操作 (2)可串行化调度的充分条件:冲突可串行化 三:两段锁协议 四:封锁的粒度 (1)概念 (2)选择封锁的原则 (3)多粒度封锁 A:多 ...

  2. 一文读懂三种并发控制机制(封锁、时间戳、有效性确认,大量例子+证明)

    文章目录 并发控制 概述 事务特性 定义 并发控制机制 串行调度和可串行调度 调度 串行调度 可串行化调度 事务和调度的记法 冲突可串行化 冲突 优先图 证明 使用锁的可串行化实现 锁 封锁调度器 两 ...

  3. 并发控制——封锁、活锁和死锁

    封锁 封锁就是事务T在对某个数据对象(表.记录等)操作之前,先向系统发出请求,对其枷锁 加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象 封锁是实现并发控 ...

  4. 数据库系统概论(王珊 第五版)复习要点

    本文整理了<数据库系统概论>一书中的要点,并以问答的形式展示出来. 部分章节还未整理,会持续更新. 提示:右侧导航栏有[目录] 如果对您有帮助,请点个赞加个关注呐. 一.绪论 1.解释下列 ...

  5. 数据库系统概论:第十一章 并发控制

    事务可以一个一个地串行执行,即每一个时刻只有一个事务正在运行,其他事务必须等迭代这个事务结束才能执行. 在单处理机中,事务的并发执行实际上是这些并行事务的并行操作轮流交叉运行.虽然单处理机系统中的并行 ...

  6. 『数据库』数据库系统效率Max--数据库并发控制

    数据库从入门到精通:戳我 文章目录 简介 1. 多用户数据库系统 2.多事务执行方式 2.1 事务串行执行 2.2 交叉并发方式(Interleaved Concurrency) 2.3同时并发方式( ...

  7. 关系数据库——并发控制

    并发控制 多用户数据库:允许多个用户同时使用的数据库(订票系统) 不同的多事务执行方式:          1.串行执行:每个时刻只有一个事务运行,其他事务必须等到这个事务结束后方能运行.       ...

  8. 数据库系统概论(第五版)复习资料

    (配套教材为数据库系统概论第五版王珊) 一.填空题 数据库 P4 数据库是长期存储在计算机内.有组织的.可共享的大量数据的集合. 数据库的数据独立性    P13 数据独立性分为物理独立性和逻辑独立性 ...

  9. 大连大学计算机科学与技术考研真题,2016年大连大学计算机科学与技术数据库系统原理复试笔试最后押题五套卷...

    一.选择题 1. 设关系R (A ,B ,C )和IS (B , C ,D ),下列各关系代数表达式不成立的是( ). A. B. C. D. [答案]B [解析]A 项.D 项都是执行自行连接运算, ...

  10. Re-id多粒度网络(MGN)的PPT汇报总结

    本文是对上篇MGN论文阅读做一个详细的补充,主要补充其结构设计及技术实现细节. 文章内容整合来自云从科技资深算法研究员袁余锋老师,通过以下四个方面来讲解本次课题: 1.ReID 的定义及技术难点: 2 ...

最新文章

  1. 计算机基础高一,2013高一计算机基础期末考试题
  2. mongodb的简单使用
  3. mongodb简介、安装、启停(转并学习)
  4. word List 11
  5. struct作为map的key时,需要重载该结构体
  6. 分治法在排序算法中的应用(JAVA)--快速排序(Lomuto划分、Hoare划分、随机化快排)
  7. Spring Boot 之 ResourceHandlerRegistry 通过url直接访问本地服务器上指定路径的资源
  8. 网约车管理系统源码 打车APP源码 顺风车源码
  9. 2022新考纲408计组详细思维导图分享
  10. spss相关分析(spss统计分析实验教程,谢蕾蕾)
  11. INVECAS发布全球首创的HDMI(R)2.1,搭载HDCP2.3芯片和IP解决方案,适用于电视、AVR、条形音响和机顶盒
  12. 802.11ac中的Beamforming技术(4)
  13. asp Jmail发送邮件
  14. Swing-右键菜单
  15. python编写系统随机产生一个数、玩家最多可以猜五次_软件工程(2019)第五次作业...
  16. window8系统 dns有问题怎么修复,浏览器代理设置,浏览器提示网页无法显示
  17. python关键词排名_全自动监控网站关键词排名(Python实现)
  18. angular快速入门教程
  19. iPad 使用技巧:备忘录
  20. Python学习笔记——爬虫之Scrapy框架

热门文章

  1. 计算机主机电池,台式机主板电池没电不换有什么影响?教你更换电脑主板电池的方法...
  2. 屏幕小于6英寸的手机_2019小屏手机有哪些 8款6英寸以下小屏全面屏手机推荐 (全文)...
  3. python之轻量级框架flask开发接口,操作数据库
  4. Python实验-小黑屋
  5. 老罗的工匠精神是不是有唯一性
  6. pp什么意思_在网络用语中PP是什么意思?
  7. 双十一大战前瞻:拼多多京东苏宁纷纷放大招,谁能挑战阿里C位?
  8. 正则表达式(18)——字符串替换案例:UBB翻译
  9. PHY--PDCCH
  10. 解决安卓CPU使用率过高问题