26.4.4.2 诊断()过程
创建用于诊断目的的当前服务器状态的报告。
此过程通过操纵sql_log_bin系统变量的会话值来在执行过程中禁用二进制日志记录。那是一个受限的操作,因此该过程需要足以设置受限会话变量的特权。参见第 5.1.8.1 节“系统变量特权”。
为diagnostics()收集的数据包括以下信息:
-
metrics视图中的信息(请参阅第 26.4.3.21 节,“Metrics 视图”)
-
来自其他相关
sys
模式视图的信息,例如确定第 95 个百分点的查询的信息 -
来自
ndbinfo
模式的信息(如果 MySQL 服务器是 NDB 群集的一部分) -
复制状态(主服务器和从服务器)
某些 sys 模式视图被计算为初始(可选),总体和增量值:
-
初始视图是diagnostics()过程开始时视图的内容。该输出与用于增量视图的起始值相同。如果
diagnostics.include_raw
配置选项为ON
,则包含初始视图。 -
整体视图是diagnostics()过程结束时视图的内容。此输出与用于增量视图的最终值相同。总的观点总是包括在内。
-
增量视图是从过程执行的开始到结束之间的差异。最小值和最大值分别是端视图中的最小值和最大值。它们不一定反映监视期间的最小值和最大值。除metrics视图外,仅在第一个和最后一个输出之间计算增量。
Parameters
-
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
:启用所有乐器和使用者。
-
Note
启用的工具和使用者越多,对 MySQL 服务器性能的影响就越大。请谨慎使用medium
设置,尤其是full
设置,这会对性能产生重大影响。
使用medium
或full
设置需要SUPER特权。
如果选择了current
以外的设置,则该过程结束时将恢复当前设置。
Configuration Options
可以使用以下配置选项或其相应的用户定义变量(请参见第 26.4.2.1 节“ sys_configtable”)来修改diagnostics()操作:
debug
,@sys.debug
如果此选项为ON
,则产生调试输出。默认值为OFF
。
diagnostics.allow_i_s_tables
,@sys.diagnostics.allow_i_s_tables
如果此选项为ON
,则允许diagnostics()过程对INFORMATION_SCHEMA.TABLEStable 执行 table 扫描。如果有很多 table,这可能会很昂贵。默认值为OFF
。
diagnostics.include_raw
,@sys.diagnostics.include_raw
如果此选项为ON
,则diagnostics()过程输出将包括来自查询metrics视图的原始输出。默认值为OFF
。
statement_truncate_len
,@sys.statement_truncate_len
format_statement()函数返回的语句的最大长度。较长的语句将被截断为此长度。默认值为 64.
Example
创建一个诊断报告,该报告每 30 秒开始一次迭代,并使用当前的 Performance Schema 设置最多运行 120 秒:
mysql> CALL sys.diagnostics(120, 30, 'current');
要在文件运行时从diagnostics()
过程捕获输出,请使用mysqlClient 端tee filename
和notee
命令(请参阅第 4.5.1.2 节“ mysqlClient 端命令”):
mysql> tee diag.out;
mysql> CALL sys.diagnostics(120, 30, 'current');
mysql> notee;