Bloom Filter是否会导致物理IO filter.DB每个插入命令? 我们目前正在进行表演对决,而Cassandra是我们的选择之一。我们在卡桑德拉遇到了一个非常奇怪的现象。这个问题不是关于性能的。 我们在Windows Server 2012上使用Cassandra 2.1.2(apache社区版)。只有2个节点,没有复制 我们使用NAS存储。
Keyspace定义: 创建KEYSPACE mykeyspace with replication = {' class':' SimpleStrategy',' replication_factor':' 1'} 表定义: CREATE TABLE mykeyspace.mytable( 签名uuid PRIMARY KEY, 数据blob )
CommitLog存储在本地计算机上。数据存储在NAS上。 在对表执行100M行插入(使用C#驱动程序)时,我们会遇到添加到filter.db的每行一个字节的IO。 (我们使用MS过程监视器来观察这种现象)。 这仅对filter.db文件造成许多IOPS(大约每秒4000-5000)。 我们预计在大多数情况下会在NAS中看到零(0)次写入,并且由于MemTable刷新到NAS和/或压缩而导致大量活动。相反,我们每秒都会看到大量微小的IOPS。 当我们按如下方式禁用布隆过滤器时:
CREATE TABLE mykeyspace.mytable( 签名uuid PRIMARY KEY, 数据blob )WITH bloom_filter_fp_chance = 1.0
我们没有看到每行插入IOPS。据我们所知,这是预期的现象。 。 但是,我们还要求Bloom Filter在稍后阶段进行读取。 问题是,为什么我们在filter.db中写入每行IO?为什么不是MemTable同花顺的一部分呢? 谢谢你的帮助。
答案 0 :(得分:0)
我发现了布隆过滤器问题。它起诉NAS。如果我们在本地磁盘上使用Cassandra(我们测试了WIN版本),那么Bloom Filter写入会缓存在操作系统级别,但如果我们使用NAS,则它不会被缓存并且会产生实际的IOps。
我们仍然没有让密钥缓存和行缓存在Windows上运行,但我会打开一个单独的问题。
感谢您提供我们的信息