目录

WAL 预写式日志记录

计算机科学中,预写日志WAL ) 是一系列用于在数据库系统中提供原子性持久性ACID属性中的两个)的技术。[1]预写日志是一种仅附加的辅助磁盘驻留结构,用于崩溃和事务恢复。在将更改写入数据库之前, 首先将更改记录在日志中,必须将其写入稳定存储。

[2]预写日志的主要功能可以概括为:

  • 允许页面缓存缓冲对磁盘驻留页面的更新,同时确保数据库系统更大上下文中的持久性语义。
  • 持久化磁盘上的所有操作,直到受这些操作影响的页面的缓存副本在磁盘上同步。每个修改数据库状态的操作都必须先记录在磁盘上,然后才能修改相关页面上的内容
  • 允许在崩溃的情况下从操作日志中重建丢失的内存更改。

在使用 WAL 的系统中,所有修改在应用之前都会写入日志。通常重做和撤消信息都存储在日志中。

这样做的目的可以通过一个例子来说明。想象一个程序在运行它的机器断电时正在执行一些操作。重新启动后,该程序可能需要知道它正在执行的操作是成功、部分成功还是失败。如果使用预写日志,程序可以检查该日志,并将意外断电时它应该执行的操作与实际执行的操作进行比较。在这种比较的基础上,程序可以决定撤销它已经开始的东西,完成它已经开始的东西,或者保持原样。

经过一定的操作后,程序应该执行一个检查点,将 WAL 中指定的所有更改写入数据库并清除日志。

WAL 允许就地完成数据库的更新。另一种实现原子更新的方法是使用影子分页,它不是就地的。就地更新的主要优点是它减少了修改索引和阻止列表的需要。

ARIES是 WAL 家族中流行的算法。

现代文件系统通常至少对文件系统元数据使用 WAL 的变体;这称为日记

参考文献

  1. ^ 海勒斯坦,约瑟夫 M.;斯通布雷克,迈克尔;汉密尔顿,詹姆斯 (2007)。数据库系统的体系结构。波士顿:现在。国际标准书号 978-1-60198-079-3OCLC  191079239
  2. ^ 彼得罗夫,亚历克斯。Database Internals:深入了解分布式数据系统的工作原理国际标准书号 978-1-4920-4031-6OCLC  1103591515

分类: 默认 标签: 发布于: 2022-08-04 10:26:30, 更新于: 2022-08-04 10:26:40