我了解到 cassandra 使用 blooms 过滤器来提高性能,并将这些过滤器数据存储到物理内存中。
1)cassandra 在哪里存储这个过滤器?(在堆内存中?)
2)这些过滤器消耗多少内存?
最佳答案
运行时,布隆过滤器必须保存在内存中,因为它们的全部目的是避免磁盘 IO。
但是,每个过滤器都与组成每个 SSTable 的其他文件一起保存到磁盘中 - 参见 http://wiki.apache.org/cassandra/ArchitectureSSTable
过滤器通常只占数据大小的一小部分,但实际比例似乎有很大差异。在我手边的测试节点上,我能找到的最大过滤器是 3.3MB,适用于 1GB 的数据。然而,对于另一个 1.3GB 的数据文件,过滤器只有 93KB...
如果您正在运行 Cassandra,您可以通过在数据目录中查找名为 *-Filter.db 的文件来自行检查过滤器的大小
关于memory-management - Cassandra是否使用Heap内存来存储blooms filter,100GB的数据需要占用多少空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7570684/