我使用Xodus存储时间序列数据(每天插入1亿到5亿行)。
我每个环境都有多个商店。每天都会创建新的商店,旧的商店(创建超过30天就可以删除)。最近,我的环境总量增长到了500 gb。
经过初步调查发现,Xodus后台清洁器线程消耗了几乎所有的IO资源,读写速度急剧下降。iostats显示了几乎90 %的利用率,读取20 mb/秒,写入0 mb/秒。
我决定给后台线程一些时间来清理环境,但是它持续运行了几天,所以最终我不得不删除整个环境。
Xodus是一个很好的工具,它找我做了错误的选择,Xodus不是专为插入大量数据而设计的,只需附加修改设计。如果您插入太多的数据,后台清理线程将无法压缩您的数据,并将消耗所有IO。
当使用Xodus处理大数据时,您能提供任何提示和技巧吗?我可以每天创造新的环境而不是创建新的商店。
发布于 2018-03-19 12:09:03
如果您可以从不同的环境中获取数据,那么每天创建一个Environment实例而不是一个Store实例肯定会使您受益。在这种情况下,GC只能处理每天的数据量。插入速率或多或少是恒定的,而取取将随着数据量的增加而缓慢下降。
如果在一个JVM中使用多个环境,请确保将EnvironmentConfig的EnvironmentConfig设置设置为true。
https://stackoverflow.com/questions/49338986
复制相似问题