环境信息
- nebula 版本:3.4.1 社区版
- 部署方式:分布式,metad、graphd 和 storaged 各3节点
- 安装方式:RPM
- 是否上生产环境:N
- 硬件信息
- HDD
- 8C64G
问题:
如下MATCH 语句在高并发下性能比较差:
MATCH p=(n1:object)-[*..3]->(n2:object)
WHERE id(n1) == "12456"
AND n2.object.type == "Linux"
RETURN DISTINCT id(n2) AS id, n2.object.type AS type, n2.object.name AS name, p as paths
LIMIT 200
测试情况说明:
- 在 500并发下语句执行耗时超过 6秒
- 资源消耗情况:CPU 最高 40% 不到,内存占用 8G 左右,感觉瓶颈不在CPU和内存
经过分析,我觉得可能与 p 对象返回了所有节点的信息有关,如果改用 relationships(p) 应该性能有提升。
但我的业务场景下,希望图数据库就能返回所需属性,避免上层业务再丰富一次。
所以,我想问:
- 不改用 relationships(p) 的情况下是否有办法提升性能?例如参数调优
- Nebula 是否考虑支持 path 中节点属性的裁剪?目前好像要么全部属性都返回,要么都不返回