SQL,增加parallel后,执行计划刷出28个

【 使用环境 】测试环境
【 OB or 其他组件 】oceanbase v5.0.1
【 使用版本 】5.0.1
【问题描述】
其实,我们使用的Oceanbase,一直有个蛮奇怪的问题,就是用了 parallel 跑一些数据的时候,SQL的执行计划会变得很多。

今天发现一个比较典型的,这个SQL,生成了31个执行计划。有时比较快的SQL,因为走的执行计划不太对,就会导致变得比较慢。想了解一下产生的原因和如何规避。

部分执行计划,执行效率非常慢。

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

在您描述的情况下,使用 parallel hint 后 SQL 生成了多个执行计划,这可能会导致查询性能下降。针对这种情况,我们推荐使用 obdiag 工具来收集相关的诊断信息和日志,从而帮助分析问题的原因。

日志采集场景: SQL性能问题
日志采集命令: obdiag gather scene run --scene=observer.perf_sql --env “{db_connect=’-h<您的主机名或IP> -P2881 -u<用户名>@<租户名> -p<密码> -D<数据库名>’, trace_id=‘请提供trace id(如果有)’}”

这条命令会帮助您收集关于SQL性能问题的详细信息,包括但不限于SQL执行计划、系统状态等,这些对于后续的问题定位非常重要。请确保在环境变量中填写了正确的数据库连接信息和Trace ID(如果有的话)。运行上述命令后,它将自动开始收集必要的数据,请耐心等待一段时间。完成后,您将获得一个包含所有相关信息的日志压缩包,建议将其提供给我们以便进行进一步的分析。

为了更好地理解您的情况并找出可能的解决方案,请您回答以下几个问题:

  1. 您是否能够提供具体的SQL语句?
  2. 在执行此SQL前后是否有观察到服务器资源(如CPU、内存)利用率异常?
  3. 是否有对集群进行过配置调整或者最近升级了OceanBase版本?如果有,能分享一下具体更改吗?
  4. 查询变慢时,是否通过OBProxy访问OceanBase?如果是的话,能否检查OBProxy侧是否存在潜在的问题?
  5. 使用Parallel之前,这个查询的表现如何?是否也有延迟现象发生?

根据您提供的更多信息,我们可以更精确地定位问题,并给出相应的优化建议。

附上敏捷诊断工具 obdiag 使用帮助链接

OceanBase 社区已接收您的帖子,正在跟进中。