并发
- 事务和程序是两个概念
- 在关系数据库中,一个事务可以是一条 SQL 语句,一组SQL 语句或整个程序
- 一个程序通常包含多个事务
- 事务是恢复和并发控制的基本单位
- 一个事务的执行不能被其他事务干扰
- 一个事务内部的操作及使用的数据对其他并发事务是隔离的
- 并发执行的各个事务之间不能互相干扰
- 事务内部更多的故障是非预期的,是不能由应用程序处理的。
- 运算溢出
- 并发事务发生死锁而被选中撤销该事务
- 违反了某些完整性限制而被终止等
- 转储操作与用户事务并发进行
- 为保证数据库是可恢复的,登记日志文件时必须遵循两条原则
- 登记的次序严格按并发事务执行的时间次序
- 必须先写日志文件,后写数据库
- 写日志文件操作:把表示这个修改的日志记录写到日志文件中
- 写数据库操作:把对数据的修改写到数据库中
- 数据库镜像在没有出现故障时可用于并发操作:一个用户对数据加排他锁修改数据,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。
- 数据库镜像不是对整个数据库进行镜像:在实际应用中用户往往只选择对关键数据和日志文件镜像
故障恢复
事务故障的恢复
事务故障:事务在运行至正常终止点前被终止