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.memorysizeи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.