Spec-Zone.ru › MySQL 5.7

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 filename и notee (см. Раздел 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/sys-diagnostics.html

Spec-Zone.ru

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