3台机器配置:8C 16G 500GSSD
nebula版本:3.6.0
通过如下优化写入速度:90w/s
- 将所有的
UPSERT
操作转成INSERT
操作,因为UPSERT
会变成三个操作:查询、重组、写入 - 将多个
INSERT
组成一条语句(我这里用 2,000 条顶点插入合成一条,不断地试出来,不同的机器不一样) - 调整 VID 为 hash 数值,并且插入前排序(感谢群里的 @Nebula初学者 提供思路),因为 Memtable 是有序链表,提前排序有助于加速写入 Memtable
- 调整 space 的 partition 数据,按照官网的来 硬盘的数据量 x 20,我感觉如果 partition 太少可能会照成数据不均匀,那么就没法充分利用多机器的服务能力
- 关闭 wal 日志写入(这个有可能丢数据,我当前的场景是可以允许丢失部分数据)
- 关闭 compact 数据压缩,等导入完毕之后手工做一次 compact
- 如果能多磁盘尽量配置多块,在 nebula-storage.conf 中的
--data_path
可以指定多目录
相关参数:
- nebula-graphx.conf 文件:调整单批写入顶点或者边的数量
--max_plan_depth=2048
- –max_allowed_statements=2048
- nebula-storage.conf文件:关闭 wal 和 compact
--rocksdb_column_family_options={"disable_auto_compactions":"true","write_buffer_size":"67108864","max_write_buffer_number":"4","max_bytes_for_level_base":"268435456"}
--rocksdb_disable_wal=true