#### 28.4.2.1 系统\_配置表

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

该表包含[`系统`](sys-schema.html)架构配置选项，每个选项一行。通过更新此表所做的配置更改会在客户端会话和服务器重新启动后持续存在。

这[`系统配置`](sys-sys-config.html)表有这些列：

-   `多变的`

    配置选项名称。

-   `价值`

    配置选项值。

-   `设置时间`

    最近修改行的时间戳。

-   `通过设置`

    最近对行进行修改的帐户。值为`空值`如果该行自[`系统`](sys-schema.html)架构已安装。

    作为一种效率措施，以最大限度地减少直接读取的数量[`系统配置`](sys-sys-config.html)桌子，[`系统`](sys-schema.html)使用此表中的值的模式函数检查具有相应名称的用户定义变量，该名称是具有相同名称的用户定义变量加上一个`@sys。`前缀（例如，对应于`诊断学。包括生的`选择是`@系统。诊断学。包括生的`。如果用户定义的变量存在于当前会话中且为非-`无效的`，函数使用其值优先于[`系统配置`](sys-sys-config.html)桌子否则，函数将读取并使用表中的值。在后一种情况下，调用函数通常还将相应的用户定义变量设置为表值，以便在同一会话中对配置选项的进一步引用使用该变量，并且无需再次读取该表。

    例如`语句_truncate_len`选项控制[`格式_语句（）`](sys-format-statement.html)作用默认值为64。要将当前会话的值临时更改为32，请设置相应的`@系统。语句_truncate_len`用户定义变量：


```
mysql> SET @stmt = 'SELECT variable, value, set_time, set_by FROM sys_config';
mysql> SELECT sys.format_statement(@stmt);
+----------------------------------------------------------+
| sys.format_statement(@stmt)                              |
+----------------------------------------------------------+
| SELECT variable, value, set_time, set_by FROM sys_config |
+----------------------------------------------------------+
mysql> SET @sys.statement_truncate_len = 32;
mysql> SELECT sys.format_statement(@stmt);
+-----------------------------------+
| sys.format_statement(@stmt)       |
+-----------------------------------+
| SELECT variabl ... ROM sys_config |
+-----------------------------------+
```

随后调用[`格式_语句（）`](sys-format-statement.html)在会话中，继续使用用户定义的变量值（32），而不是表中存储的值（64）。

要停止使用用户定义的变量并恢复使用表中的值，请将变量设置为`无效的`在你的课程中：

```
mysql> SET @sys.statement_truncate_len = NULL;
mysql> SELECT sys.format_statement(@stmt);
+----------------------------------------------------------+
| sys.format_statement(@stmt)                              |
+----------------------------------------------------------+
| SELECT variable, value, set_time, set_by FROM sys_config |
+----------------------------------------------------------+
```

或者，结束当前会话（导致用户定义的变量不再存在）并开始新会话。

上文中描述的选项之间的传统关系[`系统配置`](sys-sys-config.html)可以利用表和用户定义的变量进行临时配置更改，这些更改在会话结束时结束。但是，如果设置了一个用户定义的变量，然后在同一个会话中更改了相应的表值，那么只要用户定义的变量存在，并且没有使用-`无效的`价值（更改后的表值）*是*用于未分配用户定义变量的其他会话。）

以下列表介绍了中的选项[`系统配置`](sys-sys-config.html)表和相应的用户定义变量：

-   `诊断学。允许_i_s_表`, `@系统。诊断学。允许_i_s_表`

    如果这个选项是`在…上`这个[`诊断学（）`](sys-diagnostics.html)允许程序在计算机上执行表格扫描[`信息模式。桌子`](information-schema-tables-table.html)桌子如果有很多桌子，这可能会很贵。默认值是`关`.

-   `诊断学。包括生的`, `@系统。诊断学。包括生的`

    如果这个选项是`在…上`这个[`诊断学（）`](sys-diagnostics.html)过程包括查询[`韵律学`](sys-metrics.html)看法默认值是`关`.

-   `ps_线程_trx_信息。最大长度`, `@系统。ps_线程_trx_信息。最大长度`

    生成的JSON输出的最大长度[`ps_线程_trx_信息（）`](sys-ps-thread-trx-info.html)作用默认值为65535。

-   `声明_性能_分析仪。限度`, `@系统。声明_性能_分析仪。限度`

    对于没有内置限制的视图，要返回的最大行数。（例如[`第95百分位中包含运行时的语句`](sys-statements-with-runtimes-in-95th-percentile.html)view有一个内置限制，即它只返回平均执行时间在95%的语句。）默认值为100。

-   `声明_性能_分析仪。看法`, `@系统。声明_性能_分析仪。看法`

    用户要使用的自定义查询或视图[`声明_性能_分析器（）`](sys-statement-performance-analyzer.html)过程（该过程本身由[`诊断学（）`](sys-diagnostics.html)程序）。如果选项值包含空格，则将其解释为查询。否则，它必须是查询性能模式的现有视图的名称[`事件、声明、总结、摘要`](performance-schema-statement-summary-tables.html)桌子不可能有`限度`如果`声明_性能_分析仪。限度`配置选项大于0。默认值是`无效的`（未定义自定义视图）。

-   `语句_truncate_len`, `@系统。语句_truncate_len`

    返回的语句的最大长度[`格式_语句（）`](sys-format-statement.html)作用较长的语句会被截断到此长度。默认值为64。

    其他选项可以添加到[`系统配置`](sys-sys-config.html)桌子例如[`诊断学（）`](sys-diagnostics.html)和[`执行_prepared_stmt（）`](sys-execute-prepared-stmt.html)程序使用`调试`选项，但此选项不是[`系统配置`](sys-sys-config.html)默认情况下，因为调试输出通常仅通过设置相应的`@系统。调试`用户定义的变量。要启用调试输出，而不必在单个会话中设置该变量，请将选项添加到表中：


```
mysql> INSERT INTO sys.sys_config (variable, value) VALUES('debug', 'ON');
```

要更改表中的调试设置，请执行两项操作。首先，修改表本身中的值：

```
mysql> UPDATE sys.sys_config
       SET value = 'OFF'
       WHERE variable = 'debug';
```

其次，为了确保当前会话中的过程调用使用表中已更改的值，请将相应的用户定义变量设置为`无效的`:

```
mysql> SET @sys.debug = NULL;
```
