创建当前服务器状态的报告以用于诊断目的。
此过程通过操作 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_lenformat_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;