30.4.4.2 The diagnostics() Procedure
生成当前服务器状态报告,以供诊断用途。
该过程在执行时禁用二进制日志记录,通过 manipulation 会话的 sql_log_bin
系统变量的值。这是一个受限的操作,因此该过程需要具有设置受限会话变量的权限。请参阅第7.1.9.1节,“系统变量权限”。
对diagnostics()
收集的数据包括:
-
来自其他相关的
sys
架构视图,例如确定查询的95%分位数 -
来自
ndbinfo
架构,如果MySQL服务器是NDB集群的一部分 -
复制状态(源和副本)
一些sys架构视图是根据初始、总和delta值计算的:
-
初始视图是诊断过程开始时视图的内容。这输出与delta视图的开始值相同。初始视图包括在诊断过程中,如果
diagnostics.include_raw
配置选项设置为ON
。 -
总视图是诊断过程结束时视图的内容。这输出与delta视图的结束值相同。总视图总是包括的。
-
delta视图是从诊断过程开始到结束的差异。最小和最大值是delta视图的最小和最大值,分别。它们不一定反映监控期间的最小和最大值。除了
metrics
视图,delta计算只在首次和最后输出之间进行。
-
in_max_runtime INT UNSIGNED
: 数据收集的最大时间(秒)。使用NULL
以收集默认的60秒数据。否则,使用大于0的值。 -
in_interval INT UNSIGNED
: 数据收集之间的睡眠时间(秒)。使用NULL
以睡眠默认的30秒。否则,使用大于0的值。 -
in_auto_config ENUM('current', 'medium', 'full')
: 性能架构的配置。允许的值是:-
current
: 使用当前的instrument和consumer设置。 -
medium
: 启用一些仪器和消费者。 -
full
: 启用所有仪器和消费者。
Note启用了越多的仪器和消费者,对MySQL服务器性能的影响就越大。请小心使用
medium
设置,特别是full
设置,它对性能的影响很大。使用
medium
或full
设置需要拥有SUPER
特权。如果选择的设置不是
current
,那么当前设置将在过程结束时恢复。 -
diagnostics()
操作可以使用以下配置选项或相应的用户定义变量(见第30.4.2.1节,“The sys_config Table”):
-
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
和 filename
notee
命令(见 第6.5.1.2节,“mysql 客户端命令”):
mysql> tee diag.out;
mysql> CALL sys.diagnostics(120, 30, 'current');
mysql> notee;