util.debug.collectSlowQueryDiagnostics()
在您的 MySQL 服务器上运行诊断报告的多个迭代,使您能够在处理指定查询时分析服务器的多个方面。
诊断报告将生成一个 zip 文件,保存到本地目录或指定路径。
该工具以 TSV 和 YAML 格式生成文件。
诊断工具具有以下签名
util.debug.collectSlowQueryDiagnostics("path", "query", {options})
此工具返回的数据还包括 util.debug.collectDiagnostics()
和 util.debug.collectHighLoadDiagnostics()
收集的默认数据。
-
"
:诊断存档写入的位置。如果为空,则写入到当前目录。path
""
:要分析的 SQL 查询。query
""
:可选参数的字典。请参阅 收集诊断的选项。options
"
除了 util.debug.collectHighLoadDiagnostics()
诊断的内容外,util.debug.collectSlowQueryDiagnostics
还收集以下信息
查询的
EXPLAIN
输出。查询的优化器跟踪。
查询中使用的表的 DDL。
查询生成的警告。
- delay:
number
数据收集迭代之间等待的秒数。默认值为 30。数据仅在定义的查询运行时收集。查询完成后,数据收集停止。
- innodbMutex: true | false
如果为 true,还会收集
SHOW ENGINE INNODB MUTEX
的输出。此命令默认情况下处于禁用状态,因为它会影响生产性能。- pfsInstrumentation: [current | medium | full]
-
定义使用哪些 Performance Schema 仪器和使用者。可能的值为
current
:默认值。当前启用的 Performance Schema 仪器和使用者。不会对服务器的配置进行任何更改。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 的用户的权限运行,应谨慎使用。