导图社区 第十一章 并发控制思维导图
数据库管理并发控制,分六个板块,概述、封锁、封锁协议、死锁和活锁、并发调度的可串行性、两段锁协议
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
这是一篇关于数据库原理的思维导图,本篇思维导图包含关系数据结构及形式化定义、关系操作、关系的完整性、关系代数。
社区模板帮助中心,点此进入>>
英语词性
互联网9大思维
电费水费思维导图
D服务费结算
组织架构-单商户商城webAPP 思维导图。
法理
刑法总则
【华政插班生】文学常识-先秦
【华政插班生】文学常识-秦汉
文学常识:魏晋南北朝
第十一章 并发控制
并发控制概述
事务是并发控制的基本单位
任务
对并发操作进行正确调度
保证事务的隔离性
保证数据库的一致性
并发操作带来的数据不一致性
1.丢失修改(Lost Update)
2.不可重复读(Non-repeatable Read)
3.读“脏”数据(Dirty Read)
记号
R(x):读数据x
W(x):写数据x
主要技术
封锁(Locking)
时间戳(Timestamp)
乐观控制法
多版本并发控制(MVCC)
封锁
什么是封锁
封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁
封锁是实现并发控制的一个非常重要的技术
基本封锁类型
排它锁(Exclusive Locks,简记为X锁)
共享锁(Share Locks,简记为S锁)
锁的相容矩阵
封锁协议
在运用X锁和S锁对数据对象加锁时,需要约定一些规则,这些规则为封锁协议
保持数据一致性的常用封锁协议
1.一级封锁协议
一级封锁协议可防止丢失修改,并保证事务T是可恢复的。
在一级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,所以它不能保证可重复读和不读“脏”数据。
2.二级封锁协议
二级封锁协议可以防止丢失修改和读“脏”数据。
在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。
3.三级封锁协议
三级封锁协议可防止丢失修改、读脏数据和不可重复读。
主要区别
活锁和死锁
活锁
避免活锁:采用先来先服务的策略
死锁
解决死锁的方法
1. 死锁的预防
(1)一次封锁法
要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行
存在的问题
降低系统并发度
(2)顺序封锁法
顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。
顺序封锁法存在的问题
维护成本
难以实现
2. 死锁的诊断与解除
死锁的诊断
(1)超时法
优点:实现简单
缺点
有可能误判死锁
时限若设置得太长,死锁发生后不能及时发现
(2)等待图法
解除死锁
选择一个处理死锁代价最小的事务,将其撤消
释放此事务持有的所有的锁,使其它事务能继续运行下去
并发调度的可串行性
可串行化调度
多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同
冲突可串行化调度
冲突可串行化
一个比可串行化更严格的条件
商用系统中的调度器采用
不能交换(Swap)的动作
同一事务的两个操作
不同事务的冲突操作
两段锁协议
所有事务必须分两个阶段对数据项加锁和解锁
事务分为两个阶段
第一阶段是获得封锁,也称为扩展阶段
第二阶段是释放封锁,也称为收缩阶段