26.4.4.2 诊断()过程

创建用于诊断目的的当前服务器状态的报告。

此过程通过操纵sql_log_bin系统变量的会话值来在执行过程中禁用二进制日志记录。那是一个受限的操作,因此该过程需要足以设置受限会话变量的特权。参见第 5.1.8.1 节“系统变量特权”

diagnostics()收集的数据包括以下信息:

某些 sys 模式视图被计算为初始(可选),总体和增量值:

Parameters

Note

启用的工具和使用者越多,对 MySQL 服务器性能的影响就越大。请谨慎使用medium设置,尤其是full设置,这会对性能产生重大影响。

使用mediumfull设置需要SUPER特权。

如果选择了current以外的设置,则该过程结束时将恢复当前设置。

Configuration Options

可以使用以下配置选项或其相应的用户定义变量(请参见第 26.4.2.1 节“ sys_configtable”)来修改diagnostics()操作:

如果此选项为ON,则产生调试输出。默认值为OFF

如果此选项为ON,则允许diagnostics()过程对INFORMATION_SCHEMA.TABLEStable 执行 table 扫描。如果有很多 table,这可能会很昂贵。默认值为OFF

如果此选项为ON,则diagnostics()过程输出将包括来自查询metrics视图的原始输出。默认值为OFF

format_statement()函数返回的语句的最大长度。较长的语句将被截断为此长度。默认值为 64.

Example

创建一个诊断报告,该报告每 30 秒开始一次迭代,并使用当前的 Performance Schema 设置最多运行 120 秒:

mysql> CALL sys.diagnostics(120, 30, 'current');

要在文件运行时从diagnostics()过程捕获输出,请使用mysqlClient 端tee filenamenotee命令(请参阅第 4.5.1.2 节“ mysqlClient 端命令”):

mysql> tee diag.out;
mysql> CALL sys.diagnostics(120, 30, 'current');
mysql> notee;
首页