MySQL Shell 8.4  /  ...  /  collectSlowQueryDiagnostics 实用程序

11.8.3 collectSlowQueryDiagnostics 实用程序

关于实用程序

util.debug.collectSlowQueryDiagnostics() 在您的 MySQL 服务器上运行诊断报告的多次迭代,使您能够在处理指定查询时分析服务器的多个方面。

诊断报告以 zip 文件的形式生成到本地目录或指定路径。

该实用程序以 TSV 和 YAML 格式生成文件。

要求和限制

以下要求适用于使用诊断收集实用程序进行的导出

  • 需要 MySQL 5.7 或更高版本。

  • 该实用程序必须以 root 身份运行。

运行实用程序

诊断实用程序具有以下签名

      util.debug.collectSlowQueryDiagnostics("path", "query", {options})
注意

此实用程序返回的数据还包括 util.debug.collectDiagnostics()util.debug.collectHighLoadDiagnostics() 收集的默认数据。

  • "path":诊断存档写入的位置。如果为空,则写入当前目录。

    "query":要分析的 SQL 查询。

    "options":可选参数的字典。请参阅 收集诊断的选项

除了 util.debug.collectHighLoadDiagnostics() 诊断的内容之外,util.debug.collectSlowQueryDiagnostics 还收集以下信息

  • 查询的 EXPLAIN 输出。

  • 查询的优化器跟踪。

  • 查询中使用的表格的 DDL。

  • 查询生成的警告。

收集诊断的选项

delay: number

数据收集迭代之间等待的秒数。默认值为 30。仅在定义的查询运行时才收集数据。当查询完成后,数据收集将停止。

innodbMutex: true | false

如果为 true,还会收集 SHOW ENGINE INNODB MUTEX 的输出。默认情况下,此命令被禁用,因为它会影响生产性能。

pfsInstrumentation: [current | medium | full]

定义使用哪些性能架构仪器和使用者。可能的值为

  • current:默认值。当前启用的性能架构仪器和使用者。不会更改服务器的配置。

  • medium:启用除 %history%history_long 之外的所有使用者,以及除 wait/synch/% 之外的所有仪器。

  • full:启用所有使用者和所有仪器。

customSql: array

要运行的一个或多个 SQL 语句。您可以使用以下前缀控制何时运行这些语句

  • BEFORE 或无:默认值。自定义 SQL 运行一次,在指标收集迭代开始之前。

  • AFTER:自定义 SQL 运行一次,在指标收集迭代完成后。

  • DURING:自定义 SQL 针对指标收集的每次迭代运行一次。

例如

            {"customSql": ["statement1", "statement2", "statement3"]}
customShell: array

要运行的一个或多个 shell(DOS、BOURNE 等)命令。您可以使用以下前缀控制何时运行这些命令

  • BEFORE:默认值。命令在指标收集迭代开始之前运行一次。

  • DURING:命令针对指标收集的每次迭代运行一次。

  • AFTER:命令在指标收集迭代完成后运行一次。

例如

            {"customShell": ["command1", "command2", "command3"]}
重要

这些命令以运行 MySQL Shell 的用户的权限运行,应谨慎使用。