
简介与概述
|
17
据库发展受限的情况可能发生改变。NVM 存储减少甚至完全消除了(取决于某个确切的
技术)读和写的延迟之间的不对称,进一步提高了读写性能,并允许字节可寻址(byte-
addressable)访问。
基于内存存储的持久性
内存数据库系统在磁盘上维护备份,以提供持久性并防止易失性数据的丢失。有些数据
库只在内存中存储数据,没有任何持久性保证,但在本书的范围内我们不讨论它们。
数据库在认定操作完成之前,必须先将其结果写入一个顺序日志文件。我们将在 5.2 节
中更详细地讨论预写日志。为了避免在启动过程中或崩溃后重放完整的日志内容,内存
数据库维护了一个
备份副本
,该备份副本使用一个基于磁盘且已排序的数据结构,并且
对该结构的修改通常是异步(与客户端请求解耦)且分批处理的,这样可以减少 I/O 操
作的数量。在恢复过程中,数据库可以从备份和日志中还原数据库内容。
日志数据通常用于批量备份。在处理该批日志数据之后,备份将持有截止到这一特
定时间点的数据库
快照
,因此可以丢弃之前的日志内容。这个过程称为
生成检查点
(checkpointing)。它会更新磁盘上的数据库快照使其更接近最新的日志条目,从而缩短
恢复时间,且备份过程不会阻塞客户端请求。
一些说法认为内存数据库相当于一个具有巨大页缓存的磁盘数据库,这是不公
平 的 (见 5.1 节)。即使页
缓存
在内存里,序列化格式和数据布局也会使磁盘
数据库产生额外的开销,而不会达到与内存数据库相同的优化程度。
磁盘数据库使用专门的存储结构,针对磁盘访问进行了优化 ...