数据导入后Compact对集群稳定性的影响

最近在大批量导入数据的时候观察到一个问题,就是在数据导入完毕的一段时间内在没有任何查询的情况下storage所占cpu资源会猛的增高很多(正常的时候0.3%左右,数据导入完几个小时会达到1000%~2000%浮动)且在这段时间内查询效率对比正常情况下会有挺大的下降。 初步估计是大量数据导入后的compact导致的。请问一下这个现象出现的具体愿意是否和compact有关,有没有什么有效的方法可以减少大量数据导入之后数据库反应迟缓的时间?

您是用什么导入的呢? 一般情况下是在做 compaction,还有一种是边导入边做compaction,这样导入的时间就会变长。

还要看一下使用的是什么样的磁盘? SSD 还是 HDD?

导入的时候是直接采用sst injection的方式做的,磁盘是ssd

你们用的是 sst injection 是哪里获取的?从 nebula-java 吗?

是微信的同事开发的导入脚本,不过底层的compaction设置应该和nebula storage里面的是一样的

可以试试把compact线程改少一点让IO没那么猛,不过compact做完前,读性能还是会比较差。
没啥特别好办法,要不搞AB两个集群好了。
或者试试每次都load全量的sst呢?

可以把 auto compact 关了 改为手动触发compact

插楼问一句~~
平时在生产环境使用的时候可以长时间关闭auto compact吗
然后定时在凌晨进行compact

1 个赞

日间新写入不大就可以。
和hbase原理一样。