1. 试述事务的概念及事务的四个特性。
2. 登记日志文件时为什么必须先写日志文件,后写数据库?
3. A,B,C初始值为0
序号 | 日志 |
1 | T1:开始 |
2 | T1:写A,A=10 |
3 | T2:开始 |
4 | T2:写B,B=9 |
5 | T1:写C,C=11 |
6 | T1:提交 |
7 | T2:写C,C=13 |
8 | T3:开始 |
9 | T3:写A,A=8 |
10 | T2:回滚 |
11 | T3:写B,B=7 |
12 | T4:开始 |
13 | T3:提交 |
14 | T4:写C,C=12 |
(1)如果系统故障发生在14之后,说明哪些事务需要重做,哪些事务需要回滚,写出系统恢复后A,B,C的值
(2)如果系统故障发生在12之后,说明哪些事务需要重做,哪些事务需要回滚,写出系统恢复后A,B,C的值
(3)如果系统故障发生在9之后,说明哪些事务需要重做,哪些事务需要回滚,写出系统恢复后A,B,C的值
4. 针对不同的故障,请给出恢复的策略与方法(即如何进行事务故障的恢复,系统故障的恢复,介质故障的恢复)
答:1、事务的概念:事务是数据库操作的最小工作单元,作为单个逻辑工作单元执行的一系列操作。这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。事务是一组不可再分割的操作集合(工作逻辑单元)。
事务的四个特性:
①原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做。事务是一个不可分割的工作单位,事务中包括的操作要么全部成功,要么全部失败回滚。
②一致性(Consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。例如,在转账业务中,无论事务执行成功与否,参与转账的两个账号余额之和应该是不变的。
③隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
④持久性(Durability):也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。
2、在数据库系统中,登记日志文件时先写日志文件后写数据库的原因是为了确保数据的完整性和可恢复性。具体原因如下:
①数据恢复:当数据库系统发生故障时,可以通过检查日志文件中的记录来确定哪些事务已经提交或尚未提交。如果先写数据库修改,而在日志文件中没有相应的记录,那么在恢复时可能会丢失这些修改。
②保证事务的原子性:如果先写数据库修改,但在写入日志文件之前发生故障,那么系统可能无法确定该事务是否应该被提交或回滚。这可能导致数据处于不一致的状态。通过先写日志文件,系统可以确保在发生故障时能够正确地恢复事务的状态。
③并发控制:在并发环境中,多个事务可能同时访问和修改数据库。通过先写日志文件,系统可以跟踪每个事务的修改,并确保在并发事务之间保持数据的一致性。
3、(1)重做:T1、T3 回滚:T2、T4 系统恢复后:A=8,B=7,C=11 (2)重做:T1 回滚:T2、T3、T4 系统恢复后:A=10,B=0,C=11(3)重做:T1 回滚:T2、T3 系统恢复后:A=10,B=0,C=11
4、①事务故障的恢复
事务故障通常指的是数据库中的一次事务因为某种原因(如死锁、硬件故障、异常终止等)未能正确完成。恢复的策略和方法包括:
事务回滚(Rollback):将未完成的事务操作撤销,使数据库回到事务开始前的状态。这可以通过数据库管理系统自动处理,或者手动通过事务管理和日志来执行。
事务重放(Replay):如果事务日志(transaction log)完整且可靠,可以重放事务操作来恢复到故障发生前的状态。这在一些数据库系统中是一种常见的恢复机制。
崩溃恢复(Crash Recovery):数据库管理系统可以通过检查事务日志来确定哪些事务已经提交、哪些尚未提交,从而恢复到一致的状态。
②系统故障的恢复
系统故障可能是由于操作系统崩溃、网络中断、硬件故障等引起的,这可能影响整个应用程序的可用性。恢复的策略和方法包括:
冗余备份与恢复(Redundancy and Recovery):使用冗余的硬件或系统副本来保证系统的高可用性。当一个系统故障时,可以切换到备份系统来继续服务。
故障转移(Failover):将服务从一个故障节点自动转移到备用节点,以保证系统的连续性和可用性。
系统重新启动(System Restart):在严重的系统故障后,可能需要重新启动整个系统或相关的服务来恢复正常运行。
③介质故障的恢复
介质故障指的是存储介质(如硬盘、存储阵列等)出现故障或数据损坏的情况。恢复的策略和方法包括:
数据备份与恢复(Backup and Restore):定期备份重要数据,并在介质故障发生时,通过备份数据进行恢复。
数据镜像(Data Mirroring):将数据实时复制到多个存储设备中,以防止单个设备故障时数据丢失。
RAID(Redundant Array of Independent Disks):使用RAID技术可以通过将数据分布到多个磁盘上来提高数据的冗余和可靠性,从而防止介质故障导致的数据丢失。