26.4.4.2 Процедура diagnostics()
Создаёт отчёт о текущем состоянии сервера в диагностических целях.
Эта процедура отключает двоичное протоколирование во время выполнения, манипулируя значением сессии системной переменной sql_log_bin. Это ограниченная операция, поэтому процедуре требуются привилегии, достаточные для установки ограниченных переменных сессии. См. Раздел 5.1.8.1, «Системные переменные и привилегии».
Данные, собираемые процедурой diagnostics(), включают следующую информацию:
Информация из представления
metrics(см. Раздел 26.4.3.21, «Представление metrics»)Информация из других релевантных представлений схемы
sys, например, представление, определяющее запросы в 95-м перцентилеИнформация из схемы
ndbinfo, если MySQL-сервер является частью кластера NDBСтатус репликации (как источника, так и реплики)
Некоторые представления схемы sys рассчитываются как начальные (необязательные), общие и изменённые значения:
Начальное представление — содержимое представления в начале выполнения процедуры
diagnostics(). Этот вывод совпадает с начальными значениями, используемыми для представления изменений. Начальное представление включается, если параметр конфигурацииdiagnostics.include_rawимеет значениеON.Общее представление — содержимое представления в конце выполнения процедуры
diagnostics(). Этот вывод совпадает с конечными значениями, используемыми для представления изменений. Общее представление всегда включается.Представление изменений — разница между началом и концом выполнения процедуры. Минимальные и максимальные значения — соответственно, минимальное и максимальное значения из конечного представления. Они не обязательно отражают минимальное и максимальное значения за период мониторинга. За исключением представления
metrics, изменения рассчитываются только между первым и последним выводами.
Параметры
in_max_runtime INT UNSIGNED: Максимальное время сбора данных в секундах. ИспользуйтеNULLдля сбора данных в течение 60 секунд по умолчанию. В противном случае используйте значение больше 0.in_interval INT UNSIGNED: Время ожидания между сборами данных в секундах. ИспользуйтеNULLдля ожидания в течение 30 секунд по умолчанию. В противном случае используйте значение больше 0.-
in_auto_config ENUM('current', 'medium', 'full'): Настройка Performance Schema, которую следует использовать. Допустимые значения:current: Использовать текущие настройки инструментов и потребителей.medium: Включить некоторые инструменты и потребителей.full: Включить все инструменты и потребителей.
ПримечаниеЧем больше инструментов и потребителей включено, тем большее влияние на производительность MySQL-сервера. Будьте осторожны с настройкой
medium, особенно с настройкойfull, которая оказывает большое влияние на производительность.Использование настроек
mediumилиfullтребует привилегииSUPER.Если выбран параметр, отличный от
current, текущие настройки восстанавливаются в конце процедуры.
Параметры конфигурации
Операцию diagnostics() можно изменить с помощью следующих параметров конфигурации или соответствующих пользовательских переменных (см. Раздел 26.4.2.1, «Таблица sys_config»):
-
debug,@sys.debugЕсли этот параметр равен
ON, генерировать отладочный вывод. По умолчанию —OFF. -
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. -
statement_truncate_len,@sys.statement_truncate_lenМаксимальная длина утверждений, возвращаемых функцией
format_statement(). Более длинные утверждения усекаются до этой длины. По умолчанию — 64.
Пример
Создать отчёт о диагностике, который запускает итерацию каждые 30 секунд и работает не более 120 секунд, используя текущие настройки Performance Schema:
mysql> CALL sys.diagnostics(120, 30, 'current');
Чтобы записать вывод процедуры diagnostics() в файл во время выполнения, используйте клиент mysql с командами tee
и filenamenotee (см. Раздел 4.5.1.2, «Команды клиента mysql»):
mysql> tee diag.out;
mysql> CALL sys.diagnostics(120, 30, 'current');
mysql> notee;
© 2025 Oracle
Licensed under the GPLv2 License.