Spec-Zone.ru › MySQL 8.4

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-8.4-en/sys-diagnostics.html

Spec-Zone.ru

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