事务管理
- 概念
- 事务是一个数据库操作序列,是不可分割的工作单位。
- 要么全做,要么全不做
- 事务的执行次序被称为调度
- 并发控制
- 保证并发调度的可串行化,是为了确保事务的一致性和隔离性
- 并发控制的主要技术是封锁
- 并行数据库体系结构
- 共享内存
- 使用全局共享的内存和磁盘
- 共享磁盘
- 独立内存和多个磁盘,通过网络通讯
- 无共享资源结构
- 独立节点
- 共享内存
- 特性
- 原子性
- 一致性
- 持久性
- 隔离性:事务的并发执行不会破坏数据库的完整性
- 并发操作的问题(隔离级别)
- 脏读
- 不可重复读
- 丢失修改
- 幻读:两次查询得到的记录不同
- 读脏数据
- 指的是未提交随后又被撤销的数据
- 幻读
- 同一事务,对数据库做相同的查询,由于被其他事务改变,查询的记录不同
- 方式:可串行化
- 事务的特性
- 原子性
- 正在执行的事务中断,破坏了事务的原子性,恢复方法是利用日志进行Undo操作(撤销未完成事务对数据库的更新操作)
- 一致性
- 持久性
- 事务一经提交,对数据库的影响会体现到数据库中
- 故障发生时,已提交事务,但未写入磁盘,破坏了事务的持久性,恢复方法是进行Redo操作
- 隔离性
- 原子性
- 两段锁协议
- 分类
- 一级封锁协议:
- 解决了事务并发操作带来的数据丢失修改所产生的不一致问题
- 事务执行前锁定所有的资源,能保证不产生死锁
- 二级封锁协议
- 保证事务的串行化,不能避免死锁
- 三级封锁协议
- 1PC、2PC、3PC,三阶段提交协议,均不是完全非阻塞协议
- 一级封锁协议:
- 保证了可串行化,把每个事务分解为加锁和解锁两个阶段
- 但是两段锁协议不能保证不产生死锁
- LOCK是独占锁
- lock是共享锁
- 事务满足两段锁协议,则是可串行化的
- 分类
- 数据库的备份与恢复
- 日志文件
- 保存对数据库的更新操作,而非数据操作
- 是记录事务对数据库的更新操作的文件
- 作用
- 事务故障恢复
- 系统故障恢复
- 保存了更新前后的数据
- 协助后备副本进行介质故障恢复
- 数据转储
- 采用静态副本恢复后,数据库处于一致性状态
- 分类
- 动态和静态转储:转储时是否允许数据库进行存取、修改操作(转储和用户事务能否并发执行)
- 海量和增量转储:增量是只转储上次转储后更新过的数据,海量是转储全部数据
- 恢复分类
- 有开始有结束,应该redo
- 有开始无结束,应该undo
- 日志文件
- 安全性与完整性