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()). Если значение параметра содержит пробел, оно интерпретируется как запрос. В противном случае это должно быть имя существующего представления, которое запрашивает таблицу Performance Schemaevents_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.