Cassandra是否使用堆内存来存储Bloom过滤器,以及它为100GB数据消耗了多少空间?

时间:2011-09-27 14:19:24

标签: memory-management heap cassandra heap-memory bloom-filter

我发现cassandra使用 blooms 过滤器来提高性能,并将这些过滤器数据存储到物理内存中。

1)cassandra在哪里存储这个过滤器?(在堆内存中?)

2)这些过滤器消耗了多少内存?

1 个答案:

答案 0 :(得分:2)

运行时,Bloom过滤器必须保存在内存中,因为它们的目的是避免磁盘IO。

但是,每个过滤器都会保存到磁盘,其中包含构成每个SSTable的其他文件 - 请参阅http://wiki.apache.org/cassandra/ArchitectureSSTable

过滤器通常只占数据大小的一小部分,但实际比例似乎变化很大。在测试节点上我很方便,我能找到的最大滤波器是3.3MB,这是1GB的数据。但是,对于另一个1.3GB的数据文件,过滤器只有93KB ......

如果您正在运行Cassandra,您可以通过在数据目录中查找名为* -Filter.db的文件

来自行检查过滤器的大小。