概念
锁
数据库事务的四大特性
-
原子性(Atomicity)
事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。 -
一致性(Consistency)
一致性确保事务将数据库从一种一致的状态转换为另一种一致的状态。换句话说,事务在执行前后,数据库必须满足一些预定义的一致性规则,如约束、触发器、级联等。 -
隔离性(Isolation)
多个事务并发执行时,一个事务的执行不影响其他事务的执行。 -
持久性(Durability)
已被提交的事务对数据库的修改应该永久保存在数据库中。
事务并发
事务并发带来的问题
- 修改丢失: T1、T2事务同时更新(A=A-1),T2覆盖了T1的更新
- 脏读(Dirty Read): T2事务读取了T1事务尚未提交的修改,T1回滚,T2两次读取的结果不一样
- 不可重复读(Non-repeatable Read): T2事务读取了两次数据,读取过程中T1事务改变了数据,T1事务两次读出来的数据不一样
- 幻读: 同不可重复读,主要针对insert
三级封锁协议
两段锁和串行化
两段锁:分为两段,第一段只加锁不解锁;第二阶段只解锁不加锁; 也有可能产生死锁
备份与恢复
故障种类
- 事务故障:数据及非法输入等
- 系统故障:数据库系统、OS问题导致的,一般指软件
- 介质故障:数据库的存储介质发生故障。如磁盘损坏
数据库备份
- 静态转储:转储期间不允许对数据库存取修改
- 动态转储:转储期间允许对数据库存取修改
- 海量转储:每次转储全部数据
- 增量转储:每次转储上次转储后被更新过的数据
数据库恢复
故障恢复的两个操作
- 撤销事务(UNDO):撤销未完成的事务;过程:反向扫描事务日志,执行逆操作,直至事务开始标识。
- 重做事务(REDO):从事务开始标记起,正向扫描事务日志,重新执行事务操作,直至事务结束标识。
故障恢复策略 - 事务故障恢复:通过UNDO操作进行恢复;系统自动完成,对用户透明
- 系统故障恢复:通过REDO操作进行恢复;系统重启后自动执行
- 介质故障恢复:重装数据库,装载故障前最新备份和日志,并执行UNDO、REDO操作;需要DBA的参与