Lec19-数据库日志1

preview
需积分: 0 0 下载量 109 浏览量 更新于2022-08-04 收藏 3.75MB PDF 举报
"数据库日志和恢复机制" 数据库日志是数据库管理系统(DBMS)中的一种机制,用于记录数据库的所有操作,以便在出现故障时能够恢复数据库到正确的状态。在本节中,我们将讨论数据库日志的重要性、分类、实现机制,以及恢复机制。 Database Failure Classification 数据库故障可以分为三级: 1. 事务级别的故障:包括逻辑错误和内部状态错误。这类故障是数据库正常运营所不可避免的,因此数据库开发者必须考虑这些问题。 2. 系统级的故障:包括软件异常和硬件异常。这类故障可能是DBMS或者OS的bug,或者是硬件故障。 3. 存储介质的故障:这类故障一般是无法修复的,数据库开发者不需要考虑这些问题。 Buffer Pool Policies DBMS需要特定的缓存池管理政策来实现Undo/Redo操作,从而保证事务的原子性和持久化。常见的策略有: * Force策略:DBMS要求事务在commit的时候必须把它所做的更新写入磁盘。 * No-Force策略:DBMS不要求事务在commit的时候写入磁盘。 * No-Steal+Force策略:在这个策略下,DBMS会维护一个缓存池,事务在commit的时候将修改的数据写入磁盘。 Shadow Paging Shadow Paging是上述No-Steal+Force策略的具体实现。它会维护两份数据库数据:Master和Shadow。Master包含所有已经提交事务的数据,而Shadow包含未提交事务的数据变动。Shadow Paging可以提高效率,因为DBMS不需要复制整个数据库,只需要复制有变动的部分即可。 Shadow Paging的优点是: * 容易实现 * 回滚时不需要做undo操作 * 重启恢复的时候也不需要做redo操作 Shadow Paging的缺点是: * 磁盘I/O次数增多 * 在commit时所做的事情太多 * 容易造成数据的碎片化 在工业界实现中,Shadow Paging策略也存在一些问题,如磁盘I/O次数增多、拷贝的开销不小等。 数据库日志和恢复机制是DBMS中非常重要的组件,用于保证数据库的正确性和可靠性。数据库开发者需要考虑这些问题,选择合适的策略和机制来实现数据库的恢复。