当前课程知识点:高级数据库系统 >  第五讲 基于封锁的并发控制机制 >  3. 多粒度锁及意向锁 >  5-3. 多粒度锁及意向锁

返回《高级数据库系统》慕课在线视频课程列表

5-3. 多粒度锁及意向锁在线视频

5-3. 多粒度锁及意向锁

下一节:5-4. 死锁的处理

返回《高级数据库系统》慕课在线视频列表

5-3. 多粒度锁及意向锁课程教案、知识点、字幕

下面我们来介绍多粒度锁和意向锁

为什么要说多粒度锁呢?

是因为我们前面讲对数据库进行封锁指的是某一个数据项

但实际上这个数据项我们并没有说它是某一个元组

某一个字段,或者是某一个关系,或者是某一个整个数据库

那实际上,现实世界当中的应用有很多

不同的应用它针对的数据项的粒度是不一样的

比如说有的应用,比如说一个总公司要做一个报表的话

它可能要求是整个数据库,而数据库实际上又分为不同的区域

比如说它根据不同的应用领域可以分不同的区域

那对某一些部门要做一些报表,它可能使用的是某一个区域的数据

而实际上在一个部门它有一些要再具体细分的业务的话

那某一些业务员可能用的是一个关系或者是单独的一个元组

所以这样的话,我们封锁的整个数据库的粒度是不一样的

整个数据库我们可以把它做成一个多粒度树

实际上每一个事务它使用的数据项粒度有不同

这样的话,我们不可能让它加锁的粒度是一样的

所以我们也提出了多粒度树和多粒度锁这样的一个概念

我们对多粒度树进行多粒度加锁就相当于我们对数据库

整个数据库建立一个粒度库

然后我们对这个粒度树上的每一个节点进行加锁

这种加锁有两种方式,一种是显示加锁

比如说我也对某一个节点,每一个树上的每一个节点都可以单独的进行加锁

那么也可以是隐式加锁

隐式加锁也就是说对于当前的一个节点如果对它加锁的话

会导致它的子孙后的节点也都加上同样类型的锁

我们在检查冲突的时候,要先检查它的祖先和后代节点

这个比我们前面讲的单个数据项上的加锁要复杂一些

正因为这样我们也需要对锁的类型进行扩充

我们要扩充一种类型的锁叫做意向锁

什么叫意向锁呢?

它指的是当一个事务要对一个数据对象进行显示加锁之前

我们必须要对它的全部祖先节点加一个意向锁

那个意思就是说,我将来要对你的子孙后代节点要加某一个锁

这样的一种意向

所以如果一个节点上加有意向锁,那就意味着它的后代节点必须是被显式加锁

意向锁它又有分类,因为加锁可能类型不一样

因为有的是读锁,有的是写锁

这样的话,意向锁又分这样几类

一类是意向共享锁,叫IS锁

它是指比如我要对某一个节点加一个S锁的话

那么它的父代节点就必须加一个IS锁,这是意向共享锁

还有意向写锁

意向写锁就是如果我对一个数据想加一个排它锁的话

它的祖先节点必须要加上意向写锁,也即是IX锁

还有一种锁叫做SIX锁

它就相当于是共享锁和意向写锁

也就是说当如果我对某一个节点要加了一个SIX锁的话

那就意味着这个节点不但显示着加了共享锁,而且还加了意向写锁

也就是说一个节点既可以加共享锁,也可以加意向写锁

如果你想这样去加锁的话,它的父代节点必须加SIX锁

当我们把锁的类型进行扩展之后,锁的相容矩阵也就出来了

我们这个ppt上给出了这样一些相容矩阵

在这个矩阵里面,其中X锁还是一样

它与其他的锁都是不相容的

而SIX锁,也就是共享意向写锁,只与共享读锁相容

S锁可以与S锁相容,也可以与意向共享锁相容

而这个意向写锁可以与意向写锁和意向共享锁相容

意向共享锁除了与S锁不相容以外,它可以与其他的锁都相容

这就是这个相容矩阵,那么后面再加锁的时候

根据相容矩阵来进行加锁

在加锁的时候,我们也一样

我们要想在整个多粒度树上生成一个可串行的调度

我们也要遵循一些多粒度锁的加锁协议

那么多粒度锁的加锁协议有这么几条,记住就行

第一个就是说,它的加锁和前面讲的一样

要遵循两阶段锁协议,否则的话也会产生错误

这个是必须都要遵守的

然后另外一个就是我们加锁的时候必须要遵守相容性矩阵

那么再有一个就是加锁一定是从根节点向叶节点去加

解锁呢,是从叶节点向根节点进行,这样一个过程

这就是多粒度锁协议,我们用一个例子来说一下

比如说,我整个这个数据库它分成两个区

一个是A区,一个是B区

A区有两个关系Da和Db,B区有一个Dc

每一个关系中,比如Da有多个元组,r1、r2、r3

Db也有几个元组

假如现在我对r1这个元组想要进行一个读操作

那么对它的父代祖先,对于它所有的祖先我们都要加一个意向共享锁

一个IS锁,然后对r1加S锁

那么如果我对r2进行写操作的话

那我对它的祖先就要加意向写锁,然后对r2再加写锁,X锁

同理,比如说我的r2上的写锁一旦去除

父代祖先上的意向写锁也就要去掉

当然除了对元组进行加锁,我也可以对它的这个关系Da进行一个读操作

我就可以它的祖先加意向共享锁,然后对它再加一个S锁

这就是多粒度锁的加锁方法

多粒度锁加锁的目的就是增加事务的并行性,减少锁的开销

它适合于什么情况呢?

它比较适合于,比如说只有存取几个数据项的短事务

和一个操作整个文件,或者操作整个数据库的这样一些做报表

做一些数据挖掘,或者做一些其他分析的一些长事务混合的这样一些应用的话

那么我们用多粒度锁是非常有用的

关于这个锁机制的实现

实际上我们在ppt上也给出了一个关于所机制实现的原理

锁管理器实际上也比较简单

它实际上就是我们实现整个锁机制的内存数据结构

这个ppt上给大家列出来

比如说,我要想给数据库加锁的时候需要什么样的数据结构

需要存储什么,需要加锁的数据库对象

我们需要存储在这个数据库对象上目前是有什么样的锁模式

当前是不是有事务等待,等待队列里都是一些什么样的事务

它们是要加什么样的锁等等

这些都是由锁管理器来实现的,大家知道这个意思就行了

如果有兴趣的同学,你们可以根据这个数据结构编一些代码验证一下

高级数据库系统课程列表:

第一讲 数据文件的组织与索引技术

-1. 数据文件的组织

--1-1 数据文件的组织

-2. 索引的概念与分类

--1-2 索引的概念与分类

-3. B+树索引

--1-3 B+树索引(1)

--1-3 B+树索引(2)

-4. 散列索引

--1-4 散列索引

-5. 小结

--html

-6.练习--作业

第二讲 查询处理及优化

-1. 查询代价的测量及查询处理过程概述

--2-1 查询代价的测量及查询处理过程概述

-2. 关系操作的基础算法

--2-2. 关系操作的基础算法(1)

--2-2. 关系操作的基础算法(2)

-3. 查询表达式的运算

--2-3 查询表达式的运算

-4.查询优化机制

--2-4 查询优化机制

-5.小结

--html

-6.练习--作业

第三讲 数据管理与恢复技术

-1. 数据库的故障及可恢复模型

--3-1. 数据库的故障及可恢复模型

-2. 事务及日志的相关概念

--3-2. 事务及日志的相关概念

-3. 基于undo日志的恢复机制

--3-3. 基于undo日志的恢复机制

-4. 基于redo日志的恢复机制

--3-4. 基于redo日志的恢复机制

-5. 小结

--html

-6. 练习--作业

第四讲 事务并发调度的相关概念

-1. 并发调度及相关概念

--4-1. 并发调度及相关概念

-2. 可串行化调度

--4-2. 可串行化调度

-3. 冲突可串行化调度

--4-3. 冲突可串行化调度

-4. 小结

--html

-5. 练习--作业

第五讲 基于封锁的并发控制机制

-1. 锁的概念及封锁的原理

--5-1. 锁的概念及封锁的原理

-2. 两阶段锁协议

--5-2. 两阶段锁协议

-3. 多粒度锁及意向锁

--5-3. 多粒度锁及意向锁

-4. 死锁的处理

--5-4. 死锁的处理

-5. 小结

--html

-6. 练习--作业

第六讲 并发控制的其它机制

-1. 基于时间戳的调度

--6-1. 基于有效性检验的调度

-2. 基于有效性检验的调度

--6-2. 基于时间戳的调度

-3. 小结

--html

-4. 练习--作业

第七讲 分布式数据库基本概念

-1. 分布式数据库系统的产生及定义

--7-1. 分布式数据库系统的产生及定义(1)

--7-1. 分布式数据库系统的产生及定义(2)

-2. 分布式数据库系统的模式结构与功能结构

--7-2. 分布式数据库系统的模式结构与功能结构

-3. 分布式数据库系统中存在的技术问题

--7-3. 分布式数据库系统中存在的技术问题

-4. 小结

--html

-5. 练习--作业

第八讲 分布式数据库的设计

-1. 分布式数据库的设计方法、内容和目标

--8-1. 分布式数据库的设计方法、内容和目标

-2. 自顶向下方法构建数据库

--8-2 . 自顶向下方法构建数据库

-3. 数据的分片和分布设计

--8-3. 数据的分片和分布设计(1)

--8-3. 数据的分片和分布设计(2)

-4. 分布式数据库设计案例讲解

--8-4. 分布式数据库设计案例讲解(1)

--8-4. 分布式数据库设计案例讲解(2)

--8-4. 分布式数据库设计案例讲解(3)

-5. 小结

--html

-6. 练习--作业

第九讲 分布式数据库查询机制

-1. 分布式查询处理的步骤和代价

--1. 分布式查询处理的步骤和代价

-2. 基于等价变换的查询优化

--2. 基于等价变换的查询优化

-3. 基于半连接算法的查询优化

--3. 基于半连接算法的查询优化

-4. 基于直接连接算法的查询优化

--4. 基于直接连接算法的查询优化

-5. 小结

--html

-6. 练习--作业

第十讲 分布式数据库的事务管理及恢复机制

-1. 分布式事务概述

--1. 分布式事务概述

-2. 分布式事务的两阶段提交协议

--2. 分布式事务的两阶段提交协议

-3.分布式并发控制概述

--3.分布式并发控制概述

-4. 并发控制的加锁机制

--4. 并发控制的加锁机制

-5. 并发控制的时标技术

--5. 并发控制的时标技术

-6. 小结

--html

-7.练习--作业

高级数据库技术期末试题

-试题--作业

5-3. 多粒度锁及意向锁笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。