创建当前服务器状态的报告以用于诊断目的。
此过程通过操作 sql_log_bin
系统变量的会话值,在其执行过程中禁用二进制日志记录。这是一个受限操作,因此该过程需要足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节 “系统变量权限”。
为 diagnostics()
收集的数据包括以下信息:
metrics
视图中的信息(请参阅 第 30.4.3.21 节 “metrics 视图”)来自其他相关
sys
模式视图的信息,例如确定第 95 个百分位数查询的视图如果 MySQL 服务器是 NDB 集群的一部分,则来自
ndbinfo
模式的的信息复制状态(源和副本)
一些 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')
:要使用的性能模式配置。允许的值为: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()
过程允许对信息架构TABLES
表执行表扫描。如果表很多,这可能会很耗时。默认值为OFF
。diagnostics.include_raw
,@sys.diagnostics.include_raw
如果此选项设置为
ON
,则diagnostics()
过程输出将包含查询metrics
视图的原始输出。默认值为OFF
。statement_truncate_len
,@sys.statement_truncate_len
format_statement()
函数返回的语句的最大长度。超过此长度的语句将被截断。默认值为 64。
使用当前性能架构设置创建一个诊断报告,该报告每 30 秒启动一次迭代,最多运行 120 秒
mysql> CALL sys.diagnostics(120, 30, 'current');
要在 diagnostics()
过程运行时将其输出捕获到文件中,请使用 mysql 客户端的 tee
和 文件名
notee
命令(请参阅 第 6.5.1.2 节“mysql 客户端命令”)
mysql> tee diag.out;
mysql> CALL sys.diagnostics(120, 30, 'current');
mysql> notee;