Spec-Zone.ru › MySQL 5.7

13.7.5.15 Вывод состояния движка SHOW ENGINE

SHOW ENGINE engine_name {STATUS | MUTEX}

SHOW ENGINE отображает операционную информацию о движке хранения. Для его использования требуется привилегия PROCESS. У данного оператора есть следующие варианты:

SHOW ENGINE INNODB STATUS
SHOW ENGINE INNODB MUTEX
SHOW ENGINE PERFORMANCE_SCHEMA STATUS

SHOW ENGINE INNODB STATUS отображает подробную информацию из стандартного монитора InnoDB о состоянии движка хранения InnoDB. Информацию о стандартном мониторе и других мониторах InnoDB, которые предоставляют информацию о обработке InnoDB, см. в разделе 14.18, «Мониторы InnoDB».

SHOW ENGINE INNODB MUTEX отображает информацию о InnoDB и статистику.

Примечание

InnoDB мьютексы и rwlocks также можно отслеживать с помощью таблиц Схемы производительности. Смотрите раздел 14.17.2, «Отслеживание ожиданий мьютексов InnoDB с помощью Performance Schema».

SHOW ENGINE INNODB MUTEX вывод был удален в MySQL 5.7.2. Он был переработан и повторно введен в MySQL 5.7.8.

В MySQL 5.7.8 сбор статистики мьютексов настраивается динамически с помощью следующих опций:

  • Для включения сбора статистики мьютексов выполните:

    SET GLOBAL innodb_monitor_enable='latch';
  • Для сброса статистики мьютексов выполните:

    SET GLOBAL innodb_monitor_reset='latch';
  • Для отключения сбора статистики мьютексов выполните:

    SET GLOBAL innodb_monitor_disable='latch';

Сбор статистики мьютексов для SHOW ENGINE INNODB MUTEX также можно включить, установив innodb_monitor_enable='all', или отключить, установив innodb_monitor_disable='all'.

SHOW ENGINE INNODB MUTEX вывод содержит следующие столбцы:

  • Type

    Всегда InnoDB.

  • Name

    До MySQL 5.7.8 поле Name сообщает о файле, в котором реализован мьютекс, и строке файла, в которой он создан. Номер строки специфичен для вашей версии MySQL. С MySQL 5.7.8 сообщается только имя мьютекса. Имя файла и номер строки все еще сообщаются для rwlocks.

  • Status

    Состояние мьютекса.

    До MySQL 5.7.8 поле Status отображает несколько значений, если WITH_DEBUG было определено во время компиляции MySQL. Если WITH_DEBUG не было определено, оператор отображает только значение os_waits. В последнем случае (без WITH_DEBUG), информация, на которой основан вывод, недостаточна для различения обычных мьютексов и мьютексов, защищающих rwlocks (которые допускают несколько читателей или одного писателя). Вследствие этого вывод может содержать несколько строк для одного и того же мьютекса. Значения поля Status до MySQL 5.7.8 включают:

    • count указывает, сколько раз был запрошен мьютекс.

    • spin_waits указывает, сколько раз spinlock должен был выполниться.

    • spin_rounds указывает количество раундов spinlock. (spin_rounds, деленное на spin_waits, дает среднее количество раундов.)

    • os_waits указывает количество ожиданий операционной системы. Это происходит, когда spinlock не сработал (мьютекс не был заблокирован во время spinlock, и необходимо было уступить операционной системе и подождать).

    • os_yields указывает количество раз, когда поток, пытающийся заблокировать мьютекс, отказался от своего временного интервала и уступил операционной системе (с предположением, что разрешение другим потокам работать освобождает мьютекс, чтобы его можно было заблокировать).

    • os_wait_times указывает время (в мс), затраченное на ожидания операционной системы. В MySQL 5.7 тайминги отключены, и это значение всегда 0.

    С MySQL 5.7.8 поле Status сообщает о количестве вращений, ожиданий и вызовов. Статистика для низкоуровневых мьютексов операционной системы, которые реализованы за пределами InnoDB, не сообщается.

    • spins указывает количество вращений.

    • waits указывает количество ожиданий мьютекса.

    • calls указывает, сколько раз был запрошен мьютекс.

SHOW ENGINE INNODB MUTEX не перечисляет мьютексы и rw-блоки для каждого блока пула буферов, так как объем вывода будет чрезмерным на системах с большим пулом буферов. SHOW ENGINE INNODB MUTEX, однако, печатает агрегированные BUF_BLOCK_MUTEX значения вращений, ожиданий и вызовов для мьютексов и rw-блоков пула буферов. SHOW ENGINE INNODB MUTEX также не перечисляет мьютексы или rw-блоки, которые никогда не ожидали (os_waits=0). Таким образом, SHOW ENGINE INNODB MUTEX отображает только информацию о мьютексах и rw-блоках вне пула буферов, которые вызвали по крайней мере одно ожидание на уровне ОС.

Используйте SHOW ENGINE PERFORMANCE_SCHEMA STATUS для проверки внутренней работы кода Performance Schema:

mysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS\G
...
*************************** 3. row ***************************
  Type: performance_schema
  Name: events_waits_history.size
Status: 76
*************************** 4. row ***************************
  Type: performance_schema
  Name: events_waits_history.count
Status: 10000
*************************** 5. row ***************************
  Type: performance_schema
  Name: events_waits_history.memory
Status: 760000
...
*************************** 57. row ***************************
  Type: performance_schema
  Name: performance_schema.memory
Status: 26459600
...

Этот оператор призван помочь администратору базы данных понять влияние различных параметров Performance Schema на требования к памяти.

Name значения состоят из двух частей, которые соответственно называют внутренний буфер и атрибут буфера. Интерпретируйте имена буферов следующим образом:

  • Внутренний буфер, не представленный в виде таблицы, называется в скобках. Примеры: (pfs_cond_class).size, (pfs_mutex_class).memory.

  • Внутренний буфер, представленный в виде таблицы в базе данных performance_schema, называется по имени таблицы без скобок. Примеры: events_waits_history.size, mutex_instances.count.

  • Значение, применимое ко всей Схеме производительности, начинается с performance_schema. Пример: performance_schema.memory.

Атрибуты буфера имеют следующие значения:

  • size — размер внутренней записи, используемой реализацией, например, размер строки в таблице. Значения size нельзя изменить.

  • count — количество внутренних записей, например, количество строк в таблице. Значения count можно изменить с помощью параметров конфигурации Performance Schema.

  • Для таблицы tbl_name.memory — это произведение size и count. Для всей Схемы производительности performance_schema.memory — это сумма всего используемого места в памяти (сумма всех других значений memory).

В некоторых случаях существует прямая связь между параметром конфигурации Performance Schema и значением SHOW ENGINE. Например, events_waits_history_long.count соответствует performance_schema_events_waits_history_long_size. В других случаях связь более сложная. Например, events_waits_history.count соответствует performance_schema_events_waits_history_size (число строк на поток) умноженному на performance_schema_max_thread_instances (число потоков).

SHOW ENGINE NDB STATUS. Если на сервере включен движок хранения NDB, SHOW ENGINE NDB STATUS отображает информацию о состоянии кластера, например, количество подключенных узлов данных, строку подключения к кластеру и эпохи двоичного журнала кластера, а также количество различных объектов API кластера, созданных сервером MySQL при подключении к кластеру. Пример вывода этого оператора показан здесь:

mysql> SHOW ENGINE NDB STATUS;
+------------+-----------------------+--------------------------------------------------+
| Type       | Name                  | Status                                           |
+------------+-----------------------+--------------------------------------------------+
| ndbcluster | connection            | cluster_node_id=7,
  connected_host=198.51.100.103, connected_port=1186, number_of_data_nodes=4,
  number_of_ready_data_nodes=3, connect_count=0                                         |
| ndbcluster | NdbTransaction        | created=6, free=0, sizeof=212                    |
| ndbcluster | NdbOperation          | created=8, free=8, sizeof=660                    |
| ndbcluster | NdbIndexScanOperation | created=1, free=1, sizeof=744                    |
| ndbcluster | NdbIndexOperation     | created=0, free=0, sizeof=664                    |
| ndbcluster | NdbRecAttr            | created=1285, free=1285, sizeof=60               |
| ndbcluster | NdbApiSignal          | created=16, free=16, sizeof=136                  |
| ndbcluster | NdbLabel              | created=0, free=0, sizeof=196                    |
| ndbcluster | NdbBranch             | created=0, free=0, sizeof=24                     |
| ndbcluster | NdbSubroutine         | created=0, free=0, sizeof=68                     |
| ndbcluster | NdbCall               | created=0, free=0, sizeof=16                     |
| ndbcluster | NdbBlob               | created=1, free=1, sizeof=264                    |
| ndbcluster | NdbReceiver           | created=4, free=0, sizeof=68                     |
| ndbcluster | binlog                | latest_epoch=155467, latest_trans_epoch=148126,
  latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0,
  latest_applied_binlog_epoch=0                                                         |
+------------+-----------------------+--------------------------------------------------+

Столбец Status в каждой из этих строк содержит информацию о подключении сервера MySQL к кластеру и соответственно о состоянии двоичного журнала кластера. Информация Status представлена в виде набора значений/имен, разделенных запятыми.

Столбец Status строки connection содержит пары «имя/значение», описанные в следующей таблице.

Имя Значение
cluster_node_id Идентификатор узла сервера MySQL в кластере
connected_host Имя хоста или IP-адрес сервера управления кластером, к которому подключен сервер MySQL
connected_port Порт, используемый сервером MySQL для подключения к серверу управления (connected_host)
number_of_data_nodes Количество узлов данных, настроенных для кластера (то есть количество секций [ndbd] в файле кластера config.ini)
number_of_ready_data_nodes Количество узлов данных в кластере, которые фактически работают
connect_count Количество раз, когда этот mysqld подключался или повторно подключался к узлам данных кластера

Столбец Status строки binlog содержит информацию, относящуюся к репликации NDB Cluster. Названия и значения, которые он содержит, описаны в следующей таблице.

Имя Значение
latest_epoch Последняя эпоха, запущенная на этом сервере MySQL (то есть порядковый номер последней транзакции, запущенной на сервере)
latest_trans_epoch Последняя эпоха, обработанная узлами данных кластера
latest_received_binlog_epoch Последняя эпоха, полученная потоком двоичного журнала
latest_handled_binlog_epoch Последняя эпоха, обработанная потоком двоичного журнала (для записи в двоичный журнал)
latest_applied_binlog_epoch Последняя эпоха, фактически записанная в двоичный журнал

Дополнительную информацию см. в разделе 21.7, «Репликация NDB Cluster».

Остальные строки из вывода SHOW ENGINE NDB STATUS, которые, скорее всего, будут полезны при мониторинге кластера, перечислены здесь по Name:

  • NdbTransaction: Количество и размер объектов NdbTransaction, которые были созданы. Объект NdbTransaction создается каждый раз, когда выполняется операция со схемой таблицы (например, CREATE TABLE или ALTER TABLE) над таблицей NDB.

  • NdbOperation: Количество и размер объектов NdbOperation, которые были созданы.

  • NdbIndexScanOperation: Количество и размер объектов NdbIndexScanOperation, которые были созданы.

  • NdbIndexOperation: Количество и размер объектов NdbIndexOperation, которые были созданы.

  • NdbRecAttr: Количество и размер объектов NdbRecAttr, которые были созданы. В общем, один из них создается каждый раз, когда узел SQL выполняет операцию манипулирования данными.

  • NdbBlob: Количество и размер объектов NdbBlob, которые были созданы. Объект NdbBlob создаётся для каждой новой операции, связанной со столбцом BLOB в таблице NDB.

  • NdbReceiver: Количество и размер любых объектов NdbReceiver, которые были созданы. Число в столбце created равно числу узлов данных в кластере, к которым подключился сервер MySQL.

Примечание

SHOW ENGINE NDB STATUS возвращает пустой результат, если во время текущей сессии клиентом MySQL, обращающимся к узлу SQL, на котором выполняется данная инструкция, не было выполнено никаких операций, связанных с таблицами NDB.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/show-engine.html

Spec-Zone.ru

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