Compaction
Nebula Graph中,Compaction
是最重要的后台操作,对性能有极其重要的影响。
Compaction
操作会读取硬盘上的数据,然后重组数据结构和索引,然后再写回硬盘,可以成倍提升读取性能。将大量数据写入Nebula Graph后,为了提高读取性能,需要手动触发Compaction
操作(全量Compaction
)。
Note
Compaction
操作会长时间占用硬盘的IO,建议在业务低峰期(例如凌晨)执行该操作。
Nebula Graph有两种类型的Compaction
操作:自动和全量Compaction
。
自动Compaction
是在系统读取数据、写入数据或系统重启时自动触发Compaction
操作,提升短时间内的读取性能。默认情况下,自动Compaction
是开启状态,可能在业务高峰期触发,导致意外抢占IO影响业务。
Note
建议在业务低峰期(例如凌晨)执行该操作,避免大量占用硬盘IO影响业务。
上述命令会返回作业的ID,用户可以使用如下命令查看Compaction
状态:
为保证Nebula Graph的性能,请参考如下操作建议:
数据导入完成后,请执行
SUBMIT JOB COMPACT
。业务低峰期(例如凌晨)执行
SUBMIT JOB COMPACT
。
默认情况下,/usr/local/nebula/data/storage/nebula/{1}/data/
目录下的文件名为 LOG
文件,或者类似 LOG.old.1625797988509303
,找到如下的部分。
如果当前的 L0
文件数量较多,对读性能影响较大,可以触发 compaction。
可以,但是此时的硬盘IO会很高,可能会影响效率。
如果已经设置读写速率限制,例如rate_limit
限制为 20MB/S 时,用户可以通过 硬盘使用量/rate_limit
预估需要耗费的时间。如果没有设置读写速率限制,根据经验,速率大约为 50MB/S。
不可以。
不可以停止,必须等待操作完成。这是RocksDB的限制。