创建当前服务器状态的报告,用于诊断目的。
此过程通过操作 sql_log_bin
系统变量的会话值来禁用其执行期间的二进制日志记录。这是一个受限操作,因此该过程需要足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”。
为 diagnostics()
收集的数据包括以下信息
来自
metrics
视图的信息(请参阅 第 30.4.3.21 节,“metrics 视图”)来自其他相关
sys
模式视图的信息,例如确定第 95 百分位数的查询的视图来自
ndbinfo
模式的信息,如果 MySQL 服务器是 NDB 集群的一部分复制状态(源和副本)
一些 sys 模式视图计算为初始(可选)、总体和增量值
初始视图是在
diagnostics()
过程开始时视图的内容。此输出与增量视图使用的起始值相同。如果diagnostics.include_raw
配置选项为ON
,则会包含初始视图。总体视图是在
diagnostics()
过程结束时视图的内容。此输出与增量视图使用的结束值相同。总体视图始终包含。增量视图是从过程执行开始到结束的差异。最小值和最大值分别是结束视图的最小值和最大值。它们不一定反映监控期间的最小值和最大值。除了
metrics
视图之外,增量仅在第一个和最后一个输出之间计算。
in_max_runtime INT UNSIGNED
: 最大数据收集时间(以秒为单位)。使用NULL
来收集默认 60 秒的数据。否则,使用大于 0 的值。in_interval INT UNSIGNED
: 数据收集之间睡眠时间(以秒为单位)。使用NULL
来睡眠默认 30 秒。否则,使用大于 0 的值。in_auto_config ENUM('current', 'medium', 'full')
: 要使用的 Performance Schema 配置。允许的值为current
: 使用当前仪表和使用者设置。medium
: 启用一些仪表和使用者。full
: 启用所有仪表和使用者。
注意启用的仪表和使用者越多,对 MySQL 服务器性能的影响就越大。请谨慎使用
medium
设置,特别是full
设置,因为它会对性能造成很大影响。使用
medium
或full
设置需要SUPER
权限。如果选择了除
current
以外的设置,则在过程结束时会恢复当前设置。
diagnostics()
操作可以使用以下配置选项或其对应的用户定义变量进行修改(请参阅 第 30.4.2.1 节,“sys_config 表”)
debug
,@sys.debug
如果此选项为
ON
,则生成调试输出。默认值为OFF
。diagnostics.allow_i_s_tables
,@sys.diagnostics.allow_i_s_tables
如果此选项为
ON
,则允许diagnostics()
过程对 Information SchemaTABLES
表执行表扫描。如果表很多,这可能会很昂贵。默认值为OFF
。diagnostics.include_raw
,@sys.diagnostics.include_raw
如果此选项为
ON
,则diagnostics()
过程输出将包含查询metrics
视图的原始输出。默认值为OFF
。statement_truncate_len
,@sys.statement_truncate_len
由
format_statement()
函数返回的语句的最大长度。较长的语句将被截断到此长度。默认值为 64。
创建一个诊断报告,该报告每 30 秒开始迭代,并使用当前的 Performance Schema 设置运行最多 120 秒
mysql> CALL sys.diagnostics(120, 30, 'current');
要在运行时将 diagnostics()
过程的输出捕获到文件中,请使用 mysql 客户端的 tee
和 filename
notee
命令(参见 第 6.5.1.2 节,“mysql 客户端命令”)
mysql> tee diag.out;
mysql> CALL sys.diagnostics(120, 30, 'current');
mysql> notee;