日志的作用
DBMS在运行时,为了提高系统响应速度,在内存开辟了大量的数据缓冲区,对数据的修改并没有立即反应到物理文件上,而仅仅反映在内存中,一旦发生系统异常,如系统突然掉电,则内存信息全部丢失。为了解决这个问题,系统把修改数据库物理状态的信息收集起来,把这些信息称为“日志”,在事务提交前写入日志文件中。例如,当一条元组插入到一个表中的时候,插入行为对数据库状态的所有影响都被写入了日志文件;当删除一条元组时,删除该元组的事实也被写了进去。当系统出现故障时,通过分析日志就可以精确地知道,在故障发生前系统做了哪些动作,重做这些动作可以使系统恢复到恰好故障发生前的状态。
 
联机日志文件
系统当前正在使用的日志文件称为联机日志文件,它用来保护自上一次数据库一致状态以来所有的事务信息。联机日志文件是必须的,当系统发生异常时,系统会扫描联机日志文件进行系统恢复。
 
联机日志文件可以包含一个或多个物理文件。随着系统的运行,日志文件逐渐被产生的日志信息所填充。日志文件在必要时会在一个最大长度限制范围内自动增长,该限制参数可以按照需求进行设置。
检查点
当日志文件被占满时,系统需要清空一部分日志,以便重用日志文件的空间。为了保证被清空的日志所“保护”的数据在磁盘上的安全性,系统触发一个检查点。检查点的基本动作,是把把内存中的数据都写入磁盘,这样即便发生系统崩溃,也不需要日志来修复数据。所以检查点时的数据库处于一致性状态。
 
归档日志文件
DBMS可以在两种模式之中的一种下运行----归档模式和不归档模式。这两种模式之间的唯一区别就是,系统在重用联机日志文件时,是否将其拷贝至另一个地方,即是否生成归档日志文件。采用归档模式会对系统的性能产生影响,然而系统在归档模式下运行会更安全,当出现故障时其丢失数据的可能性更小。这是因为一旦出现介质故障,如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,而如果没有归档日志文件,则只能利用备份进行恢复。