数据量大查询速度慢

  • nebula 版本:3.5.0
  • 部署方式:分布式
  • 安装方式:RPM
  • 是否上生产环境:Y
  • 硬件信息
    • 磁盘( 1T)
    • CPU :48核
    • 内存信息 251G
  • 目前图数据库有3个图空间,另外两个数据量不大,其中一个数据量 跑了从2号到7号,总共6天的数据,现在数据量 点+边总共将近7亿数据 如下图:

    在这个数据量的查询下,查询挂接的一条语句: match(q:台区电量08日明细) with q limit 20 where q.台区电量08日明细.日期==’ ’ match(q)-[挂载于]-(m:台区) where m.台区.某个索引 starts with ‘’ return m,q 这条语句的查询竟然需要30秒以上,如果条件更多的话 会需要2分钟 这种情况 我该怎么优化呢

配置信息:总内存251G 2个服务使用 nebula 中的 graphd 分配了100G stroaged 分配了75G
是因为数据量太大造成的吗 但是 所使用到查询的数据并不是很多啊 如下图



求各位大佬 解决

把 profile 加在要优化的语句前面,把生成的执行计划贴一下呢?

我们的nebula 在内网 日志很难弄出来 而且今天下午 尤其明显 studio页面查数据一直显示超时 不知道为什么

超时有啥日志么?生成计划拍个照看看呢?:thinking: 没有计划的话估计比较难优化

主要是现在查询一直转圈查询不出来 上午还好好的 刚才开始就一直查询不到 只要查询 就算是最简单的语句 也是报错 超时

是不是 session 过期了?你那边装了 nebula-console 么?用 nebula-console 看看能不能出来结果呢?

也用了nebula-console 查询 也是查询不出来 我storage分配了75G 使用率显示的是使用了45% 内存是够的 为啥查不到数据呢 而且 我还重启了storage 但是没啥作用 内存直接到一半了 然后查询数据的时候就是一直转圈


image







这个查询语句 profile 如上图 数据量不大 就十几万 而且还用到了索引查询 但是 还是用了47秒 我想问 为啥 我看索引扫描哪里 没有limit下推呢



result.csv (170.2 KB)

这是我今天弄出来的profile 虽然说语句和上面我说的不一样 但是我这个更简单 却执行了40多秒

match (m:台区电量08日明细) with id(m) as mid limit 1 match (m1)-[挂载于]-(n:台区) where id(m1)==mid return m1,n
你试试这样能快多少

另外,你这里的“挂载于”是啥?是边名称吗?
如果是边名称的话,应该是写成match (m1)-[:挂载于]-(n:台区),挂载于前面有个分号

这里的“挂载于” 是边的名称 但是加上与不加 有啥影响吗

加上会对这种边类型进行过滤,不加上的话,他就变成了一个变量而已,没啥用

顺便问一下 如果数据量很大 有个明细表几亿数据量 我查询的时候where后面的字段是索引,但是我发现还是属于全局扫描 limit 没有下推一样 时间还是很长 这种怎么优化呢

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