块和块的操作 ■块、物理块和缓冲块 Input (A) ■块的操作 input(A):把物理 output(B) 块A的内容传送到内 B B 存的缓冲块中 ■ Output(B):把缓 磁盘 冲块B的内容传送到 内存 磁盘中恰当的物理块 图7.5块操作 中
块和块的操作 ◼ 块、物理块和缓冲块 ◼ 块的操作 ◼ input(A):把物理 块A的内容传送到内 存的缓冲块中。 ◼ Output(B):把缓 冲块B的内容传送到 磁盘中恰当的物理块 中 B 内存 A B 磁盘 input(A) output(B) 图7.5 块操作
数据访问 包含x的块Bx存 事务 包含x的块Bx存 在,read(X) 在, Input(B) 磁盘 请求read(X) 开始 write(X) 事务工作区 分配 扫描内存 磁盘缓冲区 系统
数据访问 write(X) xi 包含x的块Bx存 事务 在, read(X) 系统 开 始 请求read(X) 事务工作区 分配 X 扫描内存 磁盘缓冲区 磁盘 包含x的块Bx存 在,Input(B)
恢复和原子性的联系 银行转账系统 A=2000B=1000 事务 Output (A Output(B) 假设没有事务的 A=A-100 电或 他故 原子性,那么重 新启动事务时要 B=B+100 么A因为再执行 遍而为1800 要么B因从未执 行而保持原值
恢复和原子性的联系 银行转账系统 A=2000 B=1000 事务 A=A-100 B=B+100 Output(A) Output(B) 断电或其 假设没有事务的 他故障 原子性,那么重 新启动事务时要 么A因为再执行 一遍而为1800, 要么B因从未执 行而保持原值
恢复的基本原则和实现方法 ■基本原则:“冗余”,即数据库重复存储 ■具体实现方法 平时做好两件事:转储和建立日志 ■周期地(比如一天一次)对整个数据库进行拷贝,转储到 另一个磁盘或磁带一类存储介质中。 建立日志数据库。记录事务的开始、结束及数据每一次 插入、删除和修改前后的值,并写到“日志”库中 日发生数据库故障,分两种情况进行处理 如果数据库已被破坏,则装入last数据库备份,再利用日 志库将这两个数据库状态之间的所有更新重新做一遍。 如果数据库未被破坏,但某些数据不可靠,则撤消所有不 可靠的修改,把数据库恢复到正确的状态
恢复的基本原则和实现方法 ◼ 基本原则 : “冗余”,即数据库重复存储 ◼ 具体实现方法 ◼ 平时做好两件事:转储和建立日志 ◼ 周期地(比如一天一次)对整个数据库进行拷贝,转储到 另一个磁盘或磁带一类存储介质中。 ◼ 建立日志数据库。记录事务的开始、结束及数据每一次 插入、删除和修改前后的值,并写到“日志”库中。 ◼ 一旦发生数据库故障,分两种情况进行处理 ◼ 如果数据库已被破坏,则装入last数据库备份,再利用日 志库将这两个数据库状态之间的所有更新重新做一遍。 ◼ 如果数据库未被破坏,但某些数据不可靠,则撤消所有不 可靠的修改,把数据库恢复到正确的状态