0

在这篇从 SSTable Perspective 阅读和写作的文章(是的,相当老的文章)中,作者说 indexdb 和 sstable 文件是使用内存映射文件预热的。

每个 SSTable 的行键存储在名为 index.db 的单独文件中,在启动期间,Cassandra “遍历这些文件”,以进行预热。Cassandra 使用内存映射文件,因此希望在启动期间读取文件时,首先从内存中访问这些文件。

我在 CommitLogSegment 中看到了 MappedByteBuffer 的使用,但不适用于 SSTable Loader/Reader。同样只是将 MappedByteBuffer 映射到文件通道不会将文件加载到内存中,我认为 load 需要显式调用。

所以我的问题是:当 Cassandra 启动时,它是如何预热的?我在这篇文章的声明中遗漏了什么吗?

4

1 回答 1

1

“遍历索引文件”很可能是指索引采样。出于抽样目的,Cassandra 有时会在启动时读取文件。

由于该过程的 Cassandra 1.2 结果现在保存在分区摘要文件中。

于 2016-12-11T13:34:53.137 回答