Spec-Zone.ru › MySQL 9.2

30.4.4.2 Процедура diagnostics()

Создаёт отчёт о текущем состоянии сервера для целей диагностики.

Данная процедура отключает двоичное протоколирование во время своего выполнения, изменяя значение сеансовой переменной sql_log_bin. Это ограниченная операция, поэтому процедуре требуются привилегии, достаточные для задания ограниченных сеансовых переменных. См. Раздел 7.1.9.1, «Привилегии на системные переменные».

Данные, собираемые для diagnostics(), включают следующую информацию:

  • Информация из представления metrics (см. Раздел 30.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() можно изменить, используя следующие параметры конфигурации или соответствующие пользовательские переменные (см. Раздел 30.4.2.1, «Таблица sys_config»):

  • debug, @sys.debug

    Если этот параметр равен ON, вывести отладочный вывод. По умолчанию значение OFF.

  • diagnostics.allow_i_s_tables, @sys.diagnostics.allow_i_s_tables

    Если этот параметр равен ON, процедуре diagnostics() разрешается выполнять сканирование таблиц в таблице схемы Information Schema 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 (см. Раздел 6.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-9.2-en/sys-diagnostics.html

Spec-Zone.ru

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