返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

27.2. 预写式日志(WAL)

发布于 2019-09-30 03:07:41 字数 634 浏览 1030 评论 0 收藏 0

预写式日志(WAL)是一种实现事务日志的标准方法。有关它的详细描述可以在大多数(如果不是全部的话)有关事务处理的书中找到。简而言之,WAL 的中心思想是对数据文件的修改(它们是表和索引的载体)必须是只能发生在这些修改已经记录到日志之后,也就是说,在描述这些变化的日志记录刷新到永久存储器之后。如果我们遵循这个过程,那么就不需要在每次事务提交的时候都把数据页刷新到磁盘,因为在出现崩溃的情况下可以用日志来恢复数据库:任何尚未附加到数据页的记录都将先从日志记录中重做(这叫向前滚动恢复,也叫 REDO)。

使用 WAL 的第一个主要的好处就是显著地减少了磁盘写的次数。因为在日志提交的时候只有日志文件需要刷新到磁盘;而不是事务修改的所有数据文件。在多用户环境里,许多事务的提交可以用日志文件的一次 fsync 来完成。而且,因为日志文件是顺序写的,所以同步日志的开销要远比同步数据页的开销小。对于许多小事务修改数据存储的许多不同位置更是如此。

WAL 还提供了数据库在线备份和恢复的可能,就像节23.3里描述的那样。通过归档的 WAL 文件,可以将数据库恢复到 WAL 文件包含的任意时刻:只需要简单地安装以前的数据库物理备份,然后重放 WAL 到希望的时间点。另外,物理备份还不必是数据库状态的一个即时快照(如果其制作花了较长时间的话),因为 WAL 日志的重放将修复任何内部的不一致。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文