守护“真相之源”:深入理解数据库的预写日志(WAL)与检查点技术

日志技术

在考虑数据库系统的持久性时,关键的考虑因素是如何在数据库中实现数据的持久化。例如,在关系型数据库中,数据被存储在表中,而这些表是通过在文件系统或块系统中的数据结构来实现的。如何保存和维护这些文件,例如在单一文件中存储索引或在多个文件中分别存储索引,这取决于具体的实现方式。

当开始修改或更新表中的数据时,这意味着将开始更改索引。索引需要被更新,同时,存储在内存中的页的数据需要被提交。

那么,什么是数据库中的提交操作呢?

每当数据发生更改时,相应的页会被标记为”脏页”。在将这些脏页写回硬盘时,不仅仅是写回单个更改的值或几个字节的列,而是将整个页写回。这个页的大小由硬盘类型决定,比如是最小的页/块/扇区大小。脏页的写回操作通常是异步进行的,其频率由操作系统调度。

如果写入了大量的数据,那么将数据写回硬盘也需要相当长的时间。这里的成本并不在于将数据写回硬盘所需的时间,而在于如果数据库崩溃,数据没有成功写回硬盘,或者只写回了一部分,那么此时应该如何遵循并坚持ACID事务的原则。


赞(0)
未经允许不得转载:小狮博客 » 守护“真相之源”:深入理解数据库的预写日志(WAL)与检查点技术
分享到: 更多 (0)

联系我们