关于 FIND PATH查询的并发能力

nebula 版本:3.2.0
部署方式:单机
安装方式:RPM
是否为线上版本:N
硬件信息
磁盘 SSD
CPU 5600G
内存信息 32G 频率3200

关于FIND PATH查询的并发能力,有个疑问,想要请教各位。

在官方文档中,对于FIND PATH查询,有如下的语句:

graphd 是单进程查询,会占用很多内存。

关于这句说明,是指

(1) graphd进程在执行FIND PATH 查询的时候,不支持并发执行,请求之间将使用排队处理逻辑。

(2) graphd进程在执行FIND PATH 查询的时候,支持并发执行。单个请求在执行的时候,graphd使用但进程处理,不会启用其他进程或是线程。

关于以上,两个理解, 请问哪一个是正确的理解?

不同session之间发起的查询是并发执行的, 和某个特定的查询语句无关;
单个session内部的查询都是串行执行的;
find path算子内部会多线程并发执行.

3 个赞

用户可在配置文件nebula-graphd.conf中添加num_operator_threads参数提高FIND PATH的查询性能。num_operator_threads的取值为2~10,该值不能超过 Graph 服务所在机器的 CPU 核心个数,建议设置 为 Graph 服务所在机器的 CPU 核心个数。关于配置文件的详细信息,参见 Graph 服务配置。

可以通过配置num_operator_threads参数调整find path算子并发线程数量

2 个赞

非常感谢。我了解了。

考虑到执行路径查询,会占用大量的内存,是不是可以简单理解为,对于同样的一个查询,两个线程同时执行,会比单个线程执行的时候,占用两倍的内存?

不是这样的. find path算子内部的多线程只是为了加速, 并不会多占内存.

不好意思,我可能表达的不清晰。

我想说的是,两个Session同时调用和单个Session调用的情况。 这两种情况下的内存占用,是不是简单的是2倍的关系。

是的

好的。 非常感谢耐心解答。

1 个赞

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