在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,防止讀取時遭遇大量墓碑導致性能低下。