• RocksDB Compaction 和 Flush
    • 自动 RocksDB Compaction
      • 关闭自动 Compaction
      • 打开自动 Compaction
    • 手动触发 Compaction 和 Flush

    RocksDB Compaction 和 Flush

    Nebula Graph 支持对 storage 中的 RocksDB 设置是否自动 compaction,支持通过 HTTP 请求,手动触发 storage 的 RocksDB compaction 或 flush。

    自动 RocksDB Compaction

    关闭自动 Compaction

    在 console 输入如下命令关闭自动 compaction 并查看更改是否生效。

    1. nebula> UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = true }
    2. nebula> GET CONFIGS storage:rocksdb_column_family_options
    3. =========================================================================================================
    4. | module | name | type | mode | value |
    5. =========================================================================================================
    6. | STORAGE | rocksdb_column_family_options | NESTED | MUTABLE | {
    7. "disable_auto_compactions": "true"
    8. } |
    9. ---------------------------------------------------------------------------------------------------------

    注意: 可以在大批量数据写入前关闭 auto compaction,但请记得批量写入后再将其打开,长期关闭 auto compaction 会影响后续的读性能。

    打开自动 Compaction

    在 console 输入如下命令打开自动 compaction 并查看更改是否生效。Nebula 默认 compaction 为打开。

    1. nebula> UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = false }
    2. nebula> GET CONFIGS storage:rocksdb_column_family_options
    3. ==========================================================================================================
    4. | module | name | type | mode | value |
    5. ==========================================================================================================
    6. | STORAGE | rocksdb_column_family_options | NESTED | MUTABLE | {
    7. "disable_auto_compactions": "false"
    8. } |
    9. ----------------------------------------------------------------------------------------------------------

    手动触发 Compaction 和 Flush

    手动触发 compaction 和 flush 需要通过 HTTP 请求,命令如下。

    1. curl "${ws_ip}:${ws_http_port}/admin?space=${spaceName}&${op}"
    • ws_ip 为 HTTP 服务的 IP,可以在 etc/storage.conf 配置文件中找到。
    • ws_http_port 为 storage 的 HTTP 服务端口。
    • op 为相关的 admin 操作,当前只支持 compactflush

    例如:

    1. curl "http://127.0.0.1:12000/admin?space=test&op=compact"
    2. curl "http://127.0.0.1:12000/admin?space=test&op=flush"

    注意:请先建立图空间 test,再运行上面的 curl 命令。