我正在使用Xodus存储时间序列数据(每天插入100-500万行。)
每个环境都有多个商店。每天都会创建新商店,旧商店(创建超过30天可以删除)。最近我的总环境规模增长到500亿。
在初步调查结果显示,Xodus后台清理程序线程几乎消耗了所有IO资源,读取/写入速度急剧下降。 iostats
显示几乎90%的利用率,20 mb / sec读数和0 mb / sec写入。
我决定给后台线程一些时间来清理环境,但它会继续运行几天,所以最终我不得不删除整个环境。
Xodus是一个很棒的工具,它让我觉得我做错了选择,Xodus不是为了插入大量的数据而设计的,因为只有附加修改设计。如果插入太多数据,后台清理程序线程将无法压缩数据并将占用所有IO。
使用Xodus处理大数据时,您能否提出任何建议和技巧?我可以每天创建新环境而不是创建新商店
答案 0 :(得分:1)
如果你可以从不同的环境中获取数据,那么每天创建Environment
的实例而不是Store
的实例肯定会受益。在这种情况下,GC将仅处理每日数据量。插入率或多或少会保持不变,而随着数据总量的增加,提取速度会逐渐降低。
如果在单个JVM中使用多个环境,请确保exodus.log.cache.shared
的{{1}}设置设置为true
。