Xodus 高插入率

Xodus high insertion rate

我正在使用 Xodus 存储时间序列数据(每天插入 100-5 亿行。)

我在一个环境中有多个商店。每天都有新店创建,老店(创建超过30天可以删除)。最近我的环境总大小增加到 500 GB。

Reading/Writing 速度急剧下降,初步调查后发现,Xodus 后台清理器线程几乎消耗了所有 IO 资源。 iostats 显示几乎 90% 的利用率,20 mb/sec 读取和 0 mb/sec 写入。

我决定给后台线程一些时间来清理环境,但它保持 运行 几天,所以最终我不得不删除整个环境。

Xodus 是一个很棒的工具,它寻找我的选择是错误的,由于仅附加修改设计,Xodus 不是为插入大量数据而设计的。如果插入太多数据,后台清理器线程将无法压缩数据并消耗所有 IO。

在使用 Xodus 处理大数据时,您能提供一些提示和技巧吗?我可以每天创建新环境而不是创建新商店

如果您可以从不同的环境中获取数据,那么每天创建一个 Environment 实例而不是 Store 实例肯定会让您受益匪浅。在这种情况下,GC 将只处理每天的数据量。插入速率或多或少是恒定的,而获取将随着数据总量的增加而缓慢下降。

如果在单个 JVM 中使用多个环境,请确保 EnvironmentConfigexodus.log.cache.shared 设置设置为 true