#### 28.4.4.2 diagnostics() 过程

[](<>)[](<>)

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

此过程在执行期间通过操作会话值来禁用二进制日志记录[`sql_log_bin`](replication-options-binary-log.html#sysvar_sql_log_bin)系统变量。这是一个受限操作，因此该过程需要足够的权限来设置受限会话变量。看[第 5.1.9.1 节，“系统变量权限”](system-variable-privileges.html).

收集的数据[`诊断（）`](sys-diagnostics.html)包括以下信息：

-   信息来自[`指标`](sys-metrics.html)视图（见[第 28.4.3.21 节，“指标视图”](sys-metrics.html))

-   其他相关信息`系统`模式视图，例如确定第 95 个百分位查询的视图

-   信息来自[`ndbinfo`](mysql-cluster-ndbinfo.html)模式，如果 MySQL 服务器是 NDB Cluster 的一部分

-   复制状态（源和副本）

    一些 sys 模式视图被计算为初始（可选）、整体和增量值：

-   初始视图是视图开始时的内容[`诊断（）`](sys-diagnostics.html)程序。此输出与用于增量视图的起始值相同。如果包含初始视图`诊断.include_raw`配置选项是`在`.

-   整体视图是视图末尾的内容[`诊断（）`](sys-diagnostics.html)程序。此输出与用于增量视图的最终值相同。始终包括整体视图。

-   增量视图是从过程执行开始到结束的差异。最小值和最大值分别是端视图的最小值和最大值。它们不一定反映监测期间的最小值和最大值。除了[`指标`](sys-metrics.html)看来，增量仅在第一个和最后一个输出之间计算。

##### 参数

-   `in_max_runtime INT 未签名`：以秒为单位的最大数据收集时间。采用`空值`收集默认 60 秒的数据。否则，使用大于 0 的值。

-   `in_interval INT 未签名`：数据收集之间的睡眠时间（以秒为单位）。采用`空值`默认休眠 30 秒。否则，使用大于 0 的值。

-   `in_auto_config ENUM('current', 'medium', 'full')`：要使用的性能架构配置。允许的值为：

    -   `当前的`：使用当前仪器和用户设置。

    -   `中等的`：启用一些工具和消费者。

    -   `满的`：启用所有工具和消费者。

    笔记

    启用的工具和消费者越多，对 MySQL 服务器性能的影响就越大。小心`中等的`设置，尤其是`满的`设置，对性能影响很大。

    的使用`中等的`要么`满的`设置需要[`极好的`](privileges-provided.html#priv_super)特权。

    如果设置不是`当前的`选择后，当前设置将在程序结束时恢复。

##### 配置选项

[`诊断（）`](sys-diagnostics.html)可以使用以下配置选项或其相应的用户定义变量来修改操作（请参阅[第 28.4.2.1 节，“系统\_配置表”](sys-sys-config.html)):

-   `调试`,`@sys.debug`

    如果这个选项是`在`，产生调试输出。默认是`离开`.

-   `诊断.allow_i_s_tables`,`@sys.diagnostics.allow_i_s_tables`

    如果这个选项是`在`， 这[`诊断（）`](sys-diagnostics.html)允许过程对表执行表扫描[`INFORMATION_SCHEMA.TABLES`](information-schema-tables-table.html)桌子。如果有很多桌子，这可能会很昂贵。默认是`离开`.

-   `诊断.include_raw`,`@sys.diagnostics.include_raw`

    如果这个选项是`在`， 这[`诊断（）`](sys-diagnostics.html)过程输出包括查询的原始输出[`指标`](sys-metrics.html)看法。默认是`离开`.

-   `statement_truncate_len`,`@sys.statement_truncate_len`

    返回的语句的最大长度[`格式声明（）`](sys-format-statement.html)功能。较长的语句被截断到这个长度。默认值为 64。

##### 例子

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

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

要从`诊断（）`文件中的过程在运行时使用[**mysql**](mysql.html)客户`球座`文件名``和`注意`命令（见[第 4.5.1.2 节，“mysql 客户端命令”](mysql-commands.html)):

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