nebulagraph2.0.1 delete id1,id2..... 2w 个id 一次需要30秒 ,有什么方法优化性能

提问参考模版:

nebula 版本:2.0.1
部署方式(分布式 / rpm
是否为线上版本:Y
硬件信息
磁盘ssd 500G
CPU 16C、32G 内存信息
问题的具体描述
nebulagraph2.0.1 delete id1,id2… 2w 个id 一次需要30秒 ,有什么方法优化性能

lookup on tag1 | delete vertex $-.VertexID 

这个呢(tag1 创建了索引)

我是根据id删除的,不是根据tag
我要直接用的delete id ,id2… ,我知道全部id, 也要给tag 加索引吗??

还有我这边要批量删除大量节点和边,用什么工具效率快啊

其实我想表达的是,如果 vid 有某个共性(比如都有某个 tag)就能用 lookup 来删除

都不同的tag ,主要是我知道id,不需要tag ,我想问为甚用id 慢

您是怎么删除的,一个id一行还是多个id一行?
工具的话 importer 除了支持数据插入、更新,其实也支持删除,用减号标记就可以 ,被删除的 vid 在 csv 里,importer 可以控制并发和 batchsize,寻找适合的组合,达到最大的删除性能

https://github.com/vesoft-inc/nebula-importer#data-with-header

delete id1,di2,id3,xxx 一行2w 个id

单行 20000 应该不是最优的,太大了,可以用 importer ,给不同的组合试出最佳的情况,减小 batch,增加并发。

  concurrency: 10
...
  batchSize: 128

我这边id ,不是csv 文件。 是直接从hive 获取的,还有别的工具吗,我这边用client 连接, 多线程delete ids ,每一次2w id 一行至少30 秒,同时多线程还有时卡住了,是不能同时delete 吗

如果是代码用客户端的话,自己拼接呢,拆成几百的batch,去并行提交,用 importer 方便你去测试验证找到最优的组合,帮助最后落实在你的程序拼接删除策略逻辑里

是直接从hive 获取的,还有别的工具吗

nebula exchange 直接支持 hive 为数据源

~~Nebula Graph Database 手册

update: 抱歉,现在 exchange 不支持删除,只支持插入还。

拆成几百的batch,去并行提交是不会阻塞排队的吧, 我这边试了并行提交感觉程序卡主不动了,一直不结束。可能每个批次id太多。我调小试试

这个我知道我现在导入用的就是这个啊。我现在是要批量删除数据,不是导入,这个可以用吗

这个我知道我现在导入用的就是这个啊。我现在是要批量删除数据,不是导入,这个可以用吗

是的,你的理解是没错的,抱歉,我开始以为 exchange 也有类似于 importer 的 delete label 做删除。

好的。那我这边再测试一下并发提交找出最优的batch,concurrency 数吧

1 个赞

在用exchange /有spark,也可以用 spark connector 试一下哈,支持删除。

好的。我也试试

用connector update 数据 时 用spark sql select a,b,c from xxx 查出a,b,c 多个字段的数据集,有的字段值是null 这边用update 就覆盖为空了,怎样只更新有值的字段,为空的字段不覆盖更新

看下delete的原理,还有rocksdb的原理,这个是个比较重的过程

1 个赞

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。