Apache Cassandra IOPS 由于 BLOOM FILTER?每次插入 1 个 IOPS,每个 1 字节
本文关键字:IOPS 插入 每个 字节 由于 Cassandra BLOOM FILTER Apache | 更新日期: 2023-09-27 18:36:28
布隆过滤器会导致物理 IO 过滤。数据库每个插入命令?我们目前正在进行一场表演对决,Cassandra是我们的选择之一。我们在卡桑德拉经历了一个非常奇怪的现象。不过,这个问题与性能无关。我们在 Windows 服务器 2012 上使用 Cassandra 2.1.2(apache 社区版)。只有 2 个节点,没有复制。
我们使用 NAS 存储。
键空间定义:创建密钥空间 mykeyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}表定义:创建表 mykeyspace.mytable ( 签名 UUID 主键, 数据斑点)
提交日志存储在本地计算机上。数据存储在 NAS 上。在对表执行 100M 行插入(使用 C# 驱动程序)时,我们会遇到添加到过滤器.db每行一个字节的 IO。(我们使用MS过程监视器来观察这种现象)。这导致许多 IOPS(大约每秒 4000-5000)仅适用于过滤器.db文件。我们预计大多数时候在 NAS 中看到零 (0) 次写入,并且由于 MemTable 刷新到 NAS 和/或压缩,才会出现大量活动。相反,我们每秒都会看到大量微小的IOPS。当我们禁用布隆过滤器时,如下所示:
创建表 mykeyspace.mytable ( 签名 UUID 主键, 数据斑点) bloom_filter_fp_chance = 1.0
我们看到每行没有插入 IOPS。据我们了解,这是预期的现象。.但是,我们还需要在稍后阶段使用布隆过滤器进行读取。问题是,为什么我们在过滤器.db中写入每行的 IO?为什么这不是MemTable冲洗的一部分?感谢您的协助。
我发现了布隆过滤器问题。 如果我们在本地磁盘上使用 Cassandra(我们测试了 WIN 版本),那么布隆过滤器写入将缓存在操作系统级别,但如果我们使用 NAS,那么它不会被缓存并导致实际的 IOps。
我们仍然没有获得密钥缓存和行缓存在 Windows 上工作,但我会就此提出一个单独的问题。
感谢您向我们提供信息