Compaction

    Nebula Graph中,Compaction是最重要的后台操作,对性能有极其重要的影响。

    Compaction操作会读取硬盘上的数据,然后重组数据结构和索引,然后再写回硬盘,可以成倍提升读取性能。将大量数据写入Nebula Graph后,为了提高读取性能,需要手动触发Compaction操作(全量Compaction)。

    Nebula Graph有两种类型的Compaction操作:自动Compaction和全量。

    自动Compaction是在系统读取数据、写入数据或系统重启时自动触发Compaction操作,提升短时间内的读取性能。默认情况下,自动Compaction是开启状态,可能在业务高峰期触发,导致意外抢占IO影响业务。如果需要完全手动控制Compaction操作,用户可以关闭自动Compaction

    上述命令会返回作业的ID,用户可以使用如下命令查看Compaction状态:

    为保证Nebula Graph的性能,请参考如下操作建议:

    • 数据导入完成后,请执行SUBMIT JOB COMPACT

    • 白天时设置disable_auto_compactionsfalse,提升短时间内的读取性能。

    • 为控制Compaction的读写速率,请在配置文件nebula-storaged.conf中设置如下两个参数:

    可以,但是此时的硬盘IO会很高,可能会影响效率。

    如果已经设置读写速率限制,例如rate_limit限制为20MB/S时,用户可以通过硬盘使用量/rate_limit预估需要耗费的时间。如果没有设置读写速率限制,根据经验,速率大约为50MB/S。

    不可以停止,必须等待操作完成。这是RocksDB的限制。