当前课程知识点:高级数据库系统 >  第十讲 分布式数据库的事务管理及恢复机制 >  4. 并发控制的加锁机制 >  4. 并发控制的加锁机制

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

4. 并发控制的加锁机制在线视频

4. 并发控制的加锁机制

下一节:5. 并发控制的时标技术

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

4. 并发控制的加锁机制课程教案、知识点、字幕

下面我们首先来介绍一下分布式并发控制的加锁方法

在分布式并发控制里面加锁大概有三种方法

一种是集中式加锁,另外一种是主副本加锁

还有一种是简单的分布式加锁,我们把它叫做快照方法

那么集中式加锁是指什么呢

在这个系统当中有一个站点是主站点,它是用来管理整个系统锁机制的

如果某一个应用想要对某一个数据加锁

它必须通过主站点来进行申请,所以这样这个主站点我们也可以把它作为中心站点

由中心站点负责整个系统事务的加锁,这是这样的一种方式

这种方式显然和我们前面讲分布式数据库系统的分类

也就是从结构上进行分类是非常相似的,比如说集中式的那样一种结构

具有中心站点的,比较适用于集中式加锁的这样一种方式

再有一种加锁法叫做主副本加锁法

它是说从数据的角度出发,我们为每一个数据指定一个主副本

我们把每一个数据的拷贝都叫做一个副本

因为在这个分布式系统里面可能都存在相同的数据

这个数据我们把它叫做一个副本,但是我们要指定一个是作为主要的副本

我们对这个数据要进行加锁的时候

我们对主副本进行加锁,对它加锁就相当于对其他所有的副本进行加锁

如果对不同的数据进行加锁,就要在不同的数据站点上

也就是按照就近的原则,在不同的站点上指定它的主副本

按照这样的一种方式,主副本一旦加了锁之后

读锁当然比较容易,如果是写锁的话,主副本一旦加锁之后

它进行了更新,就要把这种写传递到其他的副本上

同时更新到其他的副本上去,那么这是这个

再有一个就是分布式的简单加锁方法

这个加锁方法是这样,就是我们的锁管理可能由各个站点调度器

就是说不是集中的来管理的,它是由各个站点来管理这个锁表

但是在实际的应用当中也会出现一些问题

所以有一种简单的解决方法就是我可以采用快照这样一种技术

我们把共享资源的数据项都在内存里面,或者说在磁盘上保留一个快照

然后如果我读数据的时候,我就读这个快照

如果写数据的时候,我当然就要写数据本身

但是数据本身一旦被写了之后,它要快速地传到这个快照上去

然后这样的话可以及时更新,将来用户在读这个数据的时候就可以读更新后的数据

就是说可以与数据的变化相一致,这是分布式的简单的一种加锁方法

分布式数据库虽然是有这样一种加锁的方法

但是它在加锁的时候要遵循一些准则

第一个就是锁的相容性规则,也就是说和我们的集中式数据库加锁是完全一样的

你不能随便地加,一定要按照锁的相容矩阵,相容的情况去加

遵循它的相容情况,接下来还要遵守两阶段锁协议

也就是说我们不能随时地解锁开锁,我们必须在整个事务的过程当中确定一个时间点

在这个时间点之前加锁,在这个时间点之后解锁

另外一般的情况下,我们要执行严格的两阶段锁协议

对于持有X锁的事务,必须等到事务提交之后才能开锁

另外一个在加锁的过程当中,仍然要坚持这样一个ROWA这样一种协议

也就是读锁一个,写锁全部,这样一个规则

也就是说我读的时候,我锁住一个副本就没关系了

但是在写的时候,我虽然映射到一个副本上

但是我把这个副本锁上之后,相当于把所有的数据全部进行锁定

实际上是按照这样一种规则来进行加锁

那么在这个加锁的过程当中,分布式数据库的加锁肯定也会产生死锁的情况

它产生死锁当然要比集中式要扩展一些

也就是说它不是集中式里面某一个局部区域的死锁

而是整个系统里的全局的死锁,全局的死锁我们可以把它称为站点死锁

因为什么呢,因为它这种情况涉及到多个站点上的数据等待

我们可以拿ppt上这张图来表示一下

比如说站点A上持有一个X的锁,现在它要请求站点B上有一个数据Y

它要对站点B上的Y进行加锁

但是目前站点B上有一个事务Ti,它现在还不能解锁

它现在想干什么呢,它现在要求站点A上对X进行加锁

只有把这个加完了之后,后面才有可能解锁

这样的话,这两个事务在两个站点上实际上就进行了一个相互持有相互等待的状态

这种死锁我们仍然可以用全局等待图来进行表示

如片子上给出来的这样一个图,那么我们可以看出

如果处于死锁状态,全局等待图就是有环的一种状态

这和局部的集中式死锁的等待图是完全一样的

有了这么一个等待图,我们说对于全局的分布式事务的处理实际上也一样

借鉴集中式死锁监测的这样一种方法,我们绘制出涉及到多个站点的全局等待图

然后我们在图中找代价最小的事务,然后进行回滚

对于死锁的处理,我们和集中式也是完全一样的

也就是说我们是通过检测的这样一种方法

周期性的对整个数据库系统上它的全局等待去进行构建

然后看是有环还是无环,如果是无环当然就无所谓了

如果是有环的话,那我们就必须要进行检测

但是这个检测由谁来进行检测呢,它也有两种方式

一种就是集中式检测,也就是像我们前面说的

我有一个主站点,这个主站点来负责所有锁的管理

它就可以来进行死锁的检测了,由主站点周期性的发出

检测出来之后,我们采用代价小的事务进行回滚这样一种方式

再有一种就是分布式死锁监测,每个站点都可以去检测

这样的话每个站点都要去检测,这个时候可能如果你不加控制的话

所有的站点都去检测,这个代价也是比较大的

一般的情况下也需要各个站点检测的时候也需要有一个规则来指定

比如说我们都去检测的时候,是指定某一时刻每个站点都去检测

还是所有站点都去检测,回头来我再去汇总成一个大的等待处理

这是分布式的死锁监测,这样一种方式

但是无论哪一种,在实现起来也都比较复杂一些

它的解决当然我们刚才说了,是采用恢复代价最小的策略

代价最小就是比如说我执行的时候耗费资源最少的

或者说是我这个事务刚刚开始,最年轻的事务

或者是一些比较短的事务,运行时间比较短的这样一些事务

当然这个过程当中,我们也要注意到不能把一些事务饿死

我们还要采用一些其他的机制,来杜绝饿死现象的发生

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

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

-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.练习--作业

高级数据库技术期末试题

-试题--作业

4. 并发控制的加锁机制笔记与讨论

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
  • 评分:
评论内容为空!
还没有评论,快来抢沙发吧!

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。
欢迎学习『4. 并发控制的加锁机制慕课视频播放-高级数据库系统-MOOC慕课视频教程-柠檬大学』