简介
以下文章适用于 ibm® db2® universal database™ for unix®.linux 与 windows®任何数据库管理系统都必须拥有确保数据一致性与可恢复性的机制.关系数据库系统为确保那些非常重要的特性所使用的众多机制之一是事务性日志记录.在本文中,我们将定义与讨论事务性日志记录的类型.我们将详细讨论如何分配日志文件.如何存储它们,以及您可能会遇到什么样的错误.最后,我们将讨论 v8 中可用的新特性,这些特性使事务性日志记录变得比以往更加可伸缩并且更通用.
事务性日志记录是什么?
数据库存储了供应用程序访问与处理的数据.那些应用程序会插入.读取.更新或删除数据.每一个这样的活动都是在一个事务中执行的,该事务被 定义成“应用程序过程中一个可恢复的操作序列”.除非已经提交了事务(也称作“工作单元”),否则它不会影响数据库.将数据库操作组合到事务中只是确保数据一致性解决方案的一半.另一半是称作 预写式日志记录(write-ahead logging)的数据库管理器实现.不管事务是否被提交,只要它们发生,就会记录这些事务.在将任何数据从缓冲池写到数据库结构之前,事务会从 日志缓冲区(log buffer)写到 日志文件(事务性日志记录).用于记录事务的文件叫作 事务日志 .
事务性日志记录的类型不止一种吗?
db2 udb 有两种可用的日志记录类型 — 循环(circular)日志记录与 归档(archive)日志记录.循环日志记录
循环日志记录是数据库使用的缺省日志记录策略.在此策略中,一旦日志目录中最后一个主日志文件被写满了,就会将新的事务写到第一个日志文件中,从而覆盖现有的日志数据.这些新事务会继续依次覆盖每个旧日志文件.这种日志记录方法确保了所有已提交事务的数据一致性,这样就可以执行应急恢复.循环日志记录通常在数据仓库环境中使用,在该环境中,恢复数据库需要的只是恢复数据库映象的问题.该策略不应该用在线事务处理(on-line transaction processing,oltp)环境,因为它不可能进行前滚恢复.下面的图 1 说明了循环日志记录:
图 1. 循环日志记录
归档日志记录
与循环日志记录相比,当最后一个日志文件写满时,归档日志记录过程会创建一个新的日志文件,这样将来的事务就不会覆盖现有的日志文件.当初始化数据库时,系统会在活动日志目录中分配一定数量.指定大小的主日志文件.这个数量由数据库配置参数(在 下一节中讨论)控制.当主日志文件都写满时,就会“根据需要”创建辅助日志文件,直到创建了最大数量的辅助日志文件为止.一旦达到了这个数量,如果需要附加的日志空间,就会发出一个错误,指出没有更多的可用日志文件,所有数据库活动停止.利用归档日志记录,就可能采取联机数据库备份,在执行这一操作期间,会继续记录数据库活动.... 下一页