我发现cassandra使用 blooms 过滤器来提高性能,并将这些过滤器数据存储到物理内存中。
1)cassandra在哪里存储这个过滤器?(在堆内存中?)
2)这些过滤器消耗了多少内存?
答案 0 :(得分:2)
运行时,Bloom过滤器必须保存在内存中,因为它们的目的是避免磁盘IO。
但是,每个过滤器都会保存到磁盘,其中包含构成每个SSTable的其他文件 - 请参阅http://wiki.apache.org/cassandra/ArchitectureSSTable
过滤器通常只占数据大小的一小部分,但实际比例似乎变化很大。在测试节点上我很方便,我能找到的最大滤波器是3.3MB,这是1GB的数据。但是,对于另一个1.3GB的数据文件,过滤器只有93KB ......
如果您正在运行Cassandra,您可以通过在数据目录中查找名为* -Filter.db的文件
来自行检查过滤器的大小。