Please enable JavaScript.
Coggle requires JavaScript to display documents.
并发控制, 对象可以是逻辑单元:属性值、元组、关系等, 也可以是物理单元:页、物理记录 - Coggle Diagram
并发控制
封锁协议
一级封锁协议
事务T在修改数据R之前必须对其加X锁,直到事务结束才释放
不修改可以不加锁,但是不能暴增重复读和不读脏数据
二级封锁协议
在一级基础上增加事务T在读取数据R之前必须对其加S锁,读完释放
读完释放S锁,不能保证可重复读
三级封锁协议
在一级基础上增加事务T在读取数据R之前必须对其加S锁,结束释放
等级越高,一致程度越高
并发调度的可串行性
可串行性是事务正确调度的准则
调度冲突可串化,则称为可串化的调度
解决方法是把一个事务的一系列操作放在一起(前提是事务之前是可以相邻之间交换顺序)
封锁的粒度
封锁对象的大小叫做封锁的粒度
多粒度封锁协议
形似树状图,对其中一个封锁,此节点后所有后裔也被加锁
意向锁
对任意一个节点意向加锁
IS锁(意向加S锁)
IX锁
SIX锁(先加S锁再加IX锁)
两段锁协议
第一段是获得的封锁,也称为扩展阶段
第二阶段是释放封锁,也成为收缩阶段
事务遵守两段锁协议是可串化调度的充分条件
封锁
排他锁(X锁)
共享锁(S锁)
活锁和死锁
活锁
导致一个事务一直处于等待状态
采用先来先服务的策略解决
死锁
A在等待B,B又在等待A,永远不能结束
预防死锁
一次封锁法
顺序封锁法
死锁的诊断和解除
超时法
等待图法
概述
事务是并发控制的基本单位
不可重复读
事务A读取后,事务B进行更新操作,使事务A无法再现前一次读取结果
读脏数据
并发操作破坏了数据的隔离性
丢失修改
两个事务读同一数据并修改,一个修改后另一个也修改导致数据丢失
对象可以是逻辑单元:属性值、元组、关系等
也可以是物理单元:页、物理记录