
事务管理
事务是一个操作序列,这些操作"要么都做,要么都不做",是数据库环境中不可分割的逻辑工作单位。
SQL中事务定义的语句
- BEGIN TRANSACTION:事务开始。
- COMMIT:事务提交 。该操作表示事务成功地结束 ,它将通知事务管理器该事务的所有更新操作现在可以被提交或永久地保留。
- COMMIT:事务回滚 。该操作表示事务非成功地结束 ,它将通知事务管理器出故障了,数据库可能处于不一致状态,该事务的所有更新操作必须回滚或撤销。
事务的性质
- 原子性:要么都做,要么都不做。
- 一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。
因此,当数据库只包含成功事务提交的结果时,称数据库处于一致性状态。 - 隔离性:事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其他事务都是不可见的。
- 持久性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也将永久有效。
数据备份与恢复
故障类型
- 事务内部故障:事务内部的故障有的可以通过事务程序本身发现。
- 系统故障 :通常称为软故 障,是指造成系统停止运行的任何事件,使得系统要重新启动,例如 CPU 故障、操作系统故障和突然停电等。
- 介质故障 :通常称为硬故障 ,如磁盘损坏、磁头碰撞和瞬时强磁干扰。此类故障发生的几率小,但破坏性最大。
- 计算机病毒 :计算机病毒是一种人为的故障和破坏,是在计算机程序中插入的破坏,计算机功能或者数据可以繁殖和传播的一组计算机指令或程序代码。
备份方法
恢复的基本原理是"建立数据冗余 ",建立冗余 数据的方法是进行数据转储 和登记日志文件。数据的转储有以下几种类型:
静态转储和动态转储:
- 静态转储:指在转储期间无法存储、修改数据。
- 动态转储:指在转储期间可以存储、修改数据。
海量转储和增量转储:
- 海量转储 :指每次转储全部数据。
- 增量转储 :指每次只转储上次转储后更新过的数据。
日志文件:
- DBMS将所有对数据库的操作写入日志文件,发生故障侧可以利用日志文件撤销改变,恢复到最初的状态。
恢复
恢复的步骤:
- 从后向前扫描文件日志,查找该事务的更新操作。
- 对事务的更新操作执行逆操作。
- 继续反向扫描 日志文件,查找该事务的其他更新操作 ,并做同样的处理,直到事务的开始标志。
数据库镜像
数据库镜像就是对数据的复制,一般是对关键数据和日志文件进行镜像。
并发控制
所谓并发操作,是指在多用户共享的系统中许多用户可能同时对同一数据进行操作,导致破坏了事务的隔离性。
并发带来的不一致性问题
- 丢失更新 :事务 T1 对数据库的修改被事务 T2 覆盖而丢失了,破坏了事务的隔离性。
- 不可重复读 :事务T1, 读取 A、B 的值后进行运算,事务 T2 在 t6 时刻对 B 的值做了修改以后,事务 T1 又重新读取 A、B 的值再运算,同一事务内对同一组数据的相同运算结果不同,显然与事实不相符。同样是事务 T2 干扰了事务 T1 的独立性。
- 读脏数据:事务 T1对数据 C 修改之后,在 t4 时刻事务 T2,读取修改后的 C 值做处理,之后事务 T1 回滚,数据 C 恢复了原来的值,事务 T2 对 C 所做的处理是无效的,它读的是被丢掉的垃圾值。

并发控制技术
并发控制的主要技术是封锁 。基本封锁的类型有排它锁 (简称X锁或写锁)和共享锁(简称S锁或读锁)。
- 排他锁:事务T对于数据A加上X锁后,只有T能读、改,其他事务无法对A加任何锁。
- 共享锁:事务T对于数据A加上S锁后,T只能读,其他事务只能对A加S锁。