10.1 什么是事务的ACID特性?DBMS是如何保证这些特性的?
解:事务的ACID特性:
(1)原子性(atomicity)。事务的所有操作要么全部都被执行,要么都不被执行。
(2)一致性(consistency)。一个单独执行的事务应保证其执行结果的一致性,即总是将数据库从一个一致性状态转化到另一个一致性状态。
(3)隔离性(isolation)。当多个事务并发执行时,一个事务的执行不能影响另一个事务,即并发执行的各个事务不能相互干扰。
(4)持久性(durability)。一个事务成功提交后,它对数据库的改变必须是永久的,即使随后系统出现故障也不会受到影响。
DBMS如何保证特性:
(1)原子性:由DBMS的恢复管理模块保证,由DBMS通过撤销未完成事务对数据库的影响实现。
(2)一致性:可利用DBMS提供的数据库完整性约束(如触发器)的自动检查功能来保证。
(3)隔离性:由DBMS的并发控制模块保证。
(4)持久性:由DBMS的恢复管理模块保证,通过利用已记录在稳定存储介质中的恢复信息来实现丢失数据的恢复。
10.2 数据库为什么需要并发控制?
解:数据库是共享资源,通常由多个事务并发执行。当多个事务并发执行时,可能产生同时读取或修改同一数据的情况。若对并发操作不加控制,就可能存取和存储不正确的数据,会破坏数据库的一致性。
10.3 串行调度和可串行化调度的区别是什么?不可串行化调度一定得到不正确的执行结果吗?
解:串行调度:指多个事务依序串行执行,只有当一个事务的所有操作执行完后,才执行另一个事务的所用操作。
可串行化调度:多个事务并发执行是正确的,当且仅当其结果与某一次序串行执行时的结果相同,称这种调度策略是可串行化的调度。
串行调度与可串行化的调度区别在于:串行化调度是多个事务依次序串行执行的;可串行化调度是多个事务并发执行的。
不可串行化调度不一定得到不正确的结果。
10.8 为什么要做检查点?检查点的主要任务是什么?
解:检查点:周期性地向日志中写一条检查点记录并记录所有当前活跃的事务,为恢复管理器提供信息,以减少恢复日志的扫描开销和提高恢复效率。
检查点的主要任务:
①将当前位于日志缓冲区的所有日志记录输出到磁盘上;
②将当前位于数据缓冲区的所有更新数据块输出到磁盘上;
③记录检查点日志并输出到磁盘上。