在HugeGraph Graph Database + RocksDB Backend环境中,以下gremlin语句查询慢(索引查询),消耗时间将近30s(正常是毫秒级),最终的结果4000条左右:
g.V().hasLabel('process')
.has('timestamp', between('2020-05-09 06:00:00', '2020-05-09 06:05:00'))
查看堆栈信息(jstack),情况正常:
查看profile,发现rocksdb的id get占据99%的时间:
进一步分析发现,是典型的删除墓碑导致查询慢问题:
解决方法:
- 避免对LSM-Tree系数据库进行大量删除操作。
- 或者在大量删除操作之后进行compaction,防止读取时遭遇大量墓碑导致性能低下。