事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
事务是数据库恢复和并发控制的基本单位。
事务的特性(ACID特性):
原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持续性(Durability)
故障分类:1. 事务故障 2. 系统故障 3. 介质故障 【前两者的恢复需要用到日志文件】
1故障:由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改。
2故障:Undo 故障发生时未完成的事务。 Redo 已完成的事务。
恢复操作的基本原理:冗余 利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据。
如何建立冗余数据。/实现恢复操作??
--数据转储 登录日志文件
日志文件(log)是用来记录事务对数据库的更新操作的文件。 两种格式:以记录为单位的日志文件。 以数据块为单位的日志文件。
并发操作不正确的调度方式带来的数据不一致性现象:
①丢失修改(Lost Update) ②不可重复读(Non-repeatable Read) ③读“脏”数据(Dirty Read)
并发控制机制的任务:
对并发操作进行正确调度 保证事务的隔离性 保证数据库的一致性
并发控制的主要技术:
封锁技术、时间戳、乐观方法和多版本并发控制。
这4类隔离级别由低到高分别是:读未提交、读已提交、可重复读和可串行化。它们都能有效避免丢失修改,但对其他数据一致性的保障程度各异。
排它锁(X锁)
若事务T对数据对象A加上排它锁,则只允许T读取和修改A。其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。
共享锁(S锁)
若事务T对数据对象A加上共享锁,则事务T可以读A但不能修改A。其它事务只能再对A加共享锁,而不能加排它锁,直到T释放A上的共享锁。