思维导图
大纲笔记
- 多用户数据库系统
- 定义
- 允许多个用户同时使用的数据库系统
- 特点
- 在同一时刻并发运行的事务数可达数百上千个
- 多事务执行方式
- 事务串行执行
- 交叉并发方式
- 单处理机系统
- 同时并发方式
- 多处理机系统
- 事务并发执行带来的问题
- 产生多个事务同时存取同一数据的情况
- 可能会存取和存储不正确的数据,破坏事务隔离性和数据库的一致性
- 数据库管理系统必须提供并发控制机制
- 并发控制机制是衡量一个数据库管理系统性能的重要标志之一
- 定义
- 封锁
- 定义
- 封锁就是事务T在对某一个数据对象操作之前,先向系统发出请求,对其加锁
- 基本封锁类型
- 排它锁(写锁):X锁
- 共享锁(读锁):S锁
- 锁的相容矩阵
- Y=Yes,相容的请求
- N:No,不相容的请求
- 作用
- 封锁是实现并发控制的一个非常重要的技术
- 定义
- 活锁和死锁
- 活锁
- 避免活锁
- 先来先服务
- 避免活锁
- 死锁
- 解决死锁方法
- 死锁预防
- 一次封锁法
- 顺序封锁法
- 死锁的诊断与解除
- 超时法
- 等待图法
- 死锁预防
- 解决死锁方法
- 活锁
- 并发调度的可串行性
- 可串行化调度
- 可串行化调度
- 多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行的执行这些事务时的结果相同
- 可串行性
- 是并发事务正确调度的准则
- 一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度
- 可串行化调度
- 冲突可串行化调度
- 冲突可串行化
- 冲突操作
- 不同的事务对同一数据的读写操作和写写操作
- 冲突
- 不能交换的动作
- 同一事务的两个操作
- 不同事务的冲突操作
- 不能交换的动作
- 可串行化调度
- 并发控制概述
- 事务是并发控制的基本单位
- 并发控制的任务
- 对并发操作进行正确调度
- 保证事务的隔离性
- 保证数据库的一致性
- 并发操作带来的数据不一致行包括
- 丢失修改
- 写-写
- 不可重复读
- 读-更新(插入、修改、删除)
- 三种情况
- 情况1
- 事务1读取某一数据
- 事务2对其做修改
- 当事务1再次读该数据时,得到与前一次不同的值
- 情况2
- 读-删除
- 情况3
- 读-插入
- 2、3称为幻影现象
- 情况1
- 读‘脏‘数据
- ’脏’数据即不正确的数据,读到的数据是数据库的临时状态
- 修改-读
- ’脏’数据即不正确的数据,读到的数据是数据库的临时状态
- 丢失修改
- 记号
- R(x):读数据x
- W(x):写数据x
- 并发控制机制就是要用正确的方式调度并发操作,使一个用户的执行不受其他事务的干扰,避免造成数据的不一致性
- 并发控制的主要技术
- 封锁
- 时间戳
- 乐观控制法
- 多版本并发控制
- 封锁协议
- 规则
- 何时申请X锁或S锁
- 持锁时间
- 何时释放
- 三级封锁协议
- 一级封锁协议
- 解决问题
- 丢失修改
- 未解决问题
- 可重复读
- 不读‘脏’数据
- 解决问题
- 二级封锁协议
- 解决问题
- 丢失修改
- 读赃数据
- 未解决问题
- 不能保证可重复读
- 解决问题
- 三级封锁协议
- 解决问题
- 丢失修改、读赃数据、不可重复读
- 未解决问题
- 无
- 解决问题
- 一级封锁协议
- 规则
- 两段封锁协议
- 事务遵循两段封锁协议是可串行化调度的充分条件,不是必要条件
- 封锁的粒度