压实时Rocksdb或Leveldb是否写日志?
Do Rocks DB or Level DB write log even when compaction?
我只知道Rocks DB在写操作的时候,为了一致性会先写日志。而且我知道如果 Memtable 被刷新,它会删除该日志。
我很好奇,当通过压缩刷新一个新的 SSTable 时,Rocks DB 是否也为那个新的 SSTable 写日志?如果不是,Rocks DB 如何通过压缩保证新 SSTable 的一致性?
是的,但它将元数据写入清单文件,否则写入日志文件。您可以在函数logandapply()中找到相关语句。
我只知道Rocks DB在写操作的时候,为了一致性会先写日志。而且我知道如果 Memtable 被刷新,它会删除该日志。 我很好奇,当通过压缩刷新一个新的 SSTable 时,Rocks DB 是否也为那个新的 SSTable 写日志?如果不是,Rocks DB 如何通过压缩保证新 SSTable 的一致性?
是的,但它将元数据写入清单文件,否则写入日志文件。您可以在函数logandapply()中找到相关语句。