Spec-Zone.ru › MySQL 8.4

30.4.2.1 Таблица sys_config

В этой таблице содержатся параметры конфигурации схемы sys, по одному параметру на строку. Изменения конфигурации, внесённые путём обновления этой таблицы, сохраняются между сеансами клиента и перезагрузками сервера.

В таблице sys_config содержатся следующие столбцы:

  • variable

    Название параметра конфигурации.

  • value

    Значение параметра конфигурации.

  • set_time

    Маркер времени последнего изменения строки.

  • set_by

    Аккаунт, который произвёл последнее изменение строки. Значение равно NULL, если строка не изменялась с момента установки схемы sys.

Для повышения эффективности, чтобы минимизировать прямое чтение из таблицы sys_config, функции схемы sys, использующие значение из этой таблицы, проверяют наличие пользовательской переменной с соответствующим именем, которое является именем пользовательской переменной плюс префикс @sys.. (Например, переменная, соответствующая параметру diagnostics.include_raw, является @sys.diagnostics.include_raw). Если пользовательская переменная существует в текущем сеансе и не равна NULL, функция использует её значение вместо значения из таблицы sys_config. В противном случае функция считывает и использует значение из таблицы. В последнем случае вызывающая функция обычно также устанавливает соответствующую пользовательскую переменную в значение из таблицы, чтобы последующие ссылки на параметр конфигурации в рамках того же сеанса использовали переменную и не считывали таблицу повторно.

Например, параметр statement_truncate_len контролирует максимальную длину заявлений, возвращаемых функцией format_statement(). Значение по умолчанию равно 64. Чтобы временно изменить значение на 32 для текущего сеанса, установите соответствующую пользовательскую переменную @sys.statement_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 |
+-----------------------------------+

Последующие вызовы функции format_statement() в рамках сеанса продолжат использовать значение пользовательской переменной (32), а не значение, хранящееся в таблице (64).

Чтобы прекратить использование пользовательской переменной и вернуться к использованию значения из таблицы, установите переменную в NULL в рамках вашего сеанса:

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_config и пользовательскими переменными может быть использовано для внесения временных изменений в конфигурацию, которые прекращаются при завершении сеанса. Однако если вы установили пользовательскую переменную, а затем в рамках того же сеанса изменили соответствующее значение в таблице, изменённое значение таблицы не используется в этом сеансе, пока пользовательская переменная существует и не равна NULL. (Изменённое значение таблицы используется в других сеансах, в которых пользовательская переменная не назначена).

Следующий список описывает параметры в таблице sys_config и соответствующие пользовательские переменные:

  • 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.

  • ps_thread_trx_info.max_length, @sys.ps_thread_trx_info.max_length

    Максимальная длина JSON-вывода, создаваемого функцией ps_thread_trx_info(). Значение по умолчанию равно 65535.

  • statement_performance_analyzer.limit, @sys.statement_performance_analyzer.limit

    Максимальное количество строк, возвращаемых для представлений, не имеющих встроенного ограничения. (Например, представление statements_with_runtimes_in_95th_percentile имеет встроенное ограничение в том смысле, что оно возвращает только запросы со средним временем выполнения в 95-м процентиле.) Значение по умолчанию равно 100.

  • statement_performance_analyzer.view, @sys.statement_performance_analyzer.view

    Пользовательский запрос или представление, используемые процедурой statement_performance_analyzer() (которая сама вызывается процедурой diagnostics()). Если значение параметра содержит пробел, оно интерпретируется как запрос. В противном случае это должно быть имя существующего представления, которое запрашивает таблицу Справочника производительности events_statements_summary_by_digest. В определении запроса или представления не может быть ни одного условия LIMIT, если параметр конфигурации statement_performance_analyzer.limit больше 0. Значение по умолчанию равно NULL (нет пользовательского представления).

  • statement_truncate_len, @sys.statement_truncate_len

    Максимальная длина заявлений, возвращаемых функцией format_statement(). Более длинные запросы усекаются до этой длины. Значение по умолчанию равно 64.

Другие параметры могут быть добавлены в таблицу sys_config. Например, процедуры diagnostics() и execute_prepared_stmt() используют параметр debug, если он существует, но по умолчанию этот параметр не является частью таблицы sys_config, поскольку вывод отладки обычно включается только временно путём установки соответствующей пользовательской переменной @sys.debug. Чтобы включить вывод отладки без необходимости установки этой переменной в отдельных сеансах, добавьте параметр в таблицу:

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

Для изменения параметра отладки в таблице выполните два действия. Сначала измените значение в самой таблице:

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

Во-вторых, чтобы также гарантировать, что вызовы процедур в рамках текущего сеанса используют изменённое значение из таблицы, установите соответствующую пользовательскую переменную в NULL:

mysql> SET @sys.debug = NULL;

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/sys-sys-config.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API