刷新和合并期间的隔离

Manticore 在实时表的刷新和合并过程中提供隔离,防止任何更改影响正在运行的查询。

例如,在表压缩期间,一对磁盘块会被合并并产生一个新的块。在某个时刻,会创建表的新版本,新块替换了原始的这一对块。这一过程是无缝进行的,因此使用原始块的长时间运行的查询将继续看到旧版本的表,而新的查询将看到包含合并后块的新版本。

同样适用于刷新 RAM 块的情况,此时合适的 RAM 段会被合并成新的磁盘块,而参与的 RAM 块段则被放弃。在此操作期间,Manticore 对操作开始前启动的查询提供隔离。

此外,这些操作对替换和更新是透明的。如果您更新属于正在与另一个块合并的磁盘块中的文档的属性,更新将应用于该块和合并后生成的新块。如果在合并期间删除文档,该文档将同时在原始块和合并后生成的新块中被删除,新块要么将该文档标记为已删除,要么如果删除发生在合并过程的早期,则根本不会包含该文档。

Last modified: August 28, 2025