注意事项说明

DBMind当前支持三种模式的慢SQL诊断能力,分别是:后台定时任务、命令行交互和API调用,下面对这三种方式的注意事项进行说明。

说明: 如果没有特别指出具体使用模式,则表示该项三种模式都适用。

  • 当前慢SQL诊断定时任务依赖opengauss-exporter指标采集慢SQL流水,该指标默认关闭,如果不启用该指标采集,则慢SQL诊断功能无法正常运行。启动慢SQL采集的方法是先手动将opengauss_exporter/yamls/statements.yaml中pg_sql_statement_history指标的status设置成enable,再重启opengauss-exporter进程。
  • 慢SQL诊断定时任务间隔支持用户自行配置,用户需要修改配置文件dbmind.conf中TIMED_TASK的slow_query_diagnosis_interval,然后执行reload操作才能生效,命令参考service子命令
  • 慢SQL诊断定时任务依赖dbe_perf.statement_history视图,当其数据量较大时可能会查询超时,此时慢SQL后台诊断任务不会生成新的诊断结果。用户可以根据数据库状况设置该指标的超时时间timeout,以免超时时间太小不能采集到指标,具体的修改方法可以参见Prometheus Exporter组件
  • 在慢SQL诊断定时任务中,由于慢SQL流水数据源dbe_perf.statement_history视图中的query字段可能会出现截断,导致query不完整,此时如果没有提供执行计划则不能进行诊断。
  • 慢SQL诊断定时任务的采集基于opengauss-exporter实现,服务运行时不能保证全量采集,可能会遗漏部分慢SQL数据。
  • 使用慢SQL交互诊断功能时,工具基于RPC和数据采集服务获取必要的数据,因此如果RPC和数据采集服务未启动则无法诊断。
  • 使用慢SQL交互诊断功能时,工具会对传入的数据库名和schema进行检测,如果数据库或schema不存在则会进行提示,不能正常进行诊断。
  • 使用慢SQL诊断功能时,工具会对传入的数据库名和schema进行检测,如果其中包含非法字符则会进行提示并拒绝诊断。
  • 慢SQL诊断过程需要获取诊断语句的执行计划,在调用慢SQL诊断API接口时建议传递执行计划(对应query_plan参数),如果前端没有传递执行计划,那么工具会主动获取执行计划内容,此时需要确保执行诊断的用户具有获取query执行计划的权限。另外,在获取执行计划过程中,如果SQL属于归一化SQL,那么工具会基于PBE方式获取执行计划,获取过程中如果由于语法结构不支持、SQL截断等原因导致获取失败则会诊断失败;如果SQL不属于归一化SQL,那么SQL截断时也不能正常诊断。
  • 使用慢SQL诊断API接口时,如果用户传入的db_name不存在则无法诊断,另外当工具在传入的schema_name下获取执行计划失败时会自动在其他schema下尝试获取执行计划直到成功获取为止,否则诊断失败。
  • 当DBMind纳管多个实例时,使用慢SQL交互诊断功能时会提示用户选择哪一个实例,然后再进行诊断动作。
  • 当前慢SQL诊断只支持DML语句。
  • 慢SQL诊断每次只能诊断一条语句,如果输入多条则只会对第一条进行诊断。
  • 当前不对系统视图根因进行诊断,根因统一为DATABASE_VIEW。
  • 慢SQL诊断过程中,如果用户不传schema信息,则schema默认为public。
  • 由于reprocessing-exporter在采集磁盘占用率时只支持EXT和XFS文件系统,因此当非上述文件系统磁盘超过阈值时不会出现磁盘空间不足的根因。
  • 如果需要诊断LOCK_CONTENTION或WAIT_EVENT根因,需要使用API调用的方式,并传入debug_query_id参数。
意见反馈
编组 3备份
    openGauss 2025-06-07 22:42:34
    取消