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 中使用多个环境,请确保 EnvironmentConfig 的 exodus.log.cache.shared
设置设置为 true
。
我正在使用 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 中使用多个环境,请确保 EnvironmentConfig 的 exodus.log.cache.shared
设置设置为 true
。