Tag索引建立前可以用match+limit查询, 建立后查询无响应

需求

想要查询图中的所有vid, 用于把vid和关键属性内容放在其他的搜索引擎(如ES)中进行模糊查询.

环境描述

  • nebula 版本:v3.3.0
  • 部署方式: 单机
  • 安装方式:Docker
  • 是否为线上版本:Y
  • 硬件信息
    • SSD
    • 64G内存

问题描述

对于一个目前数据量6000万的Tag, 在建立Tag的原生索引前, 用 match (v: some_tag) return v limit 10还是能查询数据的, 新建索引并rebuild后反而查询响应极慢或报错了.
想求助大佬们, 这种情况是否正常, 以及要实现这个需求有什么更好的解决方案么

机器配置

机器数 1
磁盘类型 SSD
CPU 核数 8
内存大小 64G
NebulaGraph 版本号 v3.3.0

服务状态,使用 show hosts 语句

图空间 schema (相关Tag的)

查询语句,需要调优的那条语句
match (v: medical_record) return v limit 10

数据量,涉及到的数据量大概多少
6000w

profile 信息,(目前有索引, 是查不出来的)

创建index语句

explain查询结果



参考这个 关于性能有调优的你应该知道的非技术姿势 帖子,提供下相关的执行计划。

已在提问中补充

试试用 explain 加在要优化的语句后面看看呢

在原帖加了截图, 限于服务器原因只能截图无法复制

看上去是 limit 下推没生效,可以提个 issue。

我提了个 issue,你可以关注下这个 issue 的处理情况哈。

好的!

3.4.0 修复了 是在 3.3.0 之后才合并的哈

push limit down index scan by jievince · Pull Request #5019 · vesoft-inc/nebula · GitHub

cc @kyle @jievince

2 个赞

你可以升级到最新版本哈

我也是,没加索引之前match速度很快,加完索引rebuild之后就不行了,match数据用了10多秒 :rofl:

好的

确实是, 我除了查不出来报错, 也遇到过这样的情况. 目前的话在业务上主要还是靠外部搜索引擎定位vid后再去图中探索. 但有些场景可能还是需要match

:sob: 3.4 不这样了

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