17.17.3 Монитор InnoDB по умолчанию и монитор блокировок
Монитор блокировок идентичен монитору по умолчанию, за исключением того, что он включает дополнительную информацию о блокировках. Включение любого из мониторов для периодического вывода включает один и тот же поток вывода, но в поток включается дополнительная информация, если включен монитор блокировок. Например, если вы включите монитор по умолчанию и монитор блокировок, это включит один поток вывода. В поток включается дополнительная информация о блокировках до тех пор, пока вы не отключите монитор блокировок.
Вывод монитора по умолчанию ограничен 1 МБ при использовании инструкции SHOW ENGINE INNODB
STATUS. Это ограничение не распространяется на вывод в стандартный поток ошибок сервера (stderr).
Пример вывода монитора по умолчанию:
mysql> SHOW ENGINE INNODB STATUS\G
*************************** 1. row ***************************
Type: InnoDB
Name:
Status:
=====================================
2018-04-12 15:14:08 0x7f971c063700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 4 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 15 srv_active, 0 srv_shutdown, 1122 srv_idle
srv_master_thread log flush and writes: 0
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 24
OS WAIT ARRAY INFO: signal count 24
RW-shared spins 4, rounds 8, OS waits 4
RW-excl spins 2, rounds 60, OS waits 2
RW-sx spins 0, rounds 0, OS waits 0
Spin rounds per wait: 2.00 RW-shared, 30.00 RW-excl, 0.00 RW-sx
------------------------
LATEST FOREIGN KEY ERROR
------------------------
2018-04-12 14:57:24 0x7f97a9c91700 Transaction:
TRANSACTION 7717, ACTIVE 0 sec inserting
mysql tables in use 1, locked 1
4 lock struct(s), heap size 1136, 3 row lock(s), undo log entries 3
MySQL thread id 8, OS thread handle 140289365317376, query id 14 localhost root update
INSERT INTO child VALUES (NULL, 1), (NULL, 2), (NULL, 3), (NULL, 4), (NULL, 5), (NULL, 6)
Foreign key constraint fails for table `test`.`child`:
,
CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`) ON DELETE
CASCADE ON UPDATE CASCADE
Trying to add in child table, in index par_ind tuple:
DATA TUPLE: 2 fields;
0: len 4; hex 80000003; asc ;;
1: len 4; hex 80000003; asc ;;
But in parent table `test`.`parent`, in index PRIMARY,
the closest match we can find is record:
PHYSICAL RECORD: n_fields 3; compact format; info bits 0
0: len 4; hex 80000004; asc ;;
1: len 6; hex 000000001e19; asc ;;
2: len 7; hex 81000001110137; asc 7;;
------------
TRANSACTIONS
------------
Trx id counter 7748
Purge done for trx's n:o < 7747 undo n:o < 0 state: running but idle
History list length 19
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 421764459790000, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 7747, ACTIVE 23 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 1136, 1 row lock(s)
MySQL thread id 9, OS thread handle 140286987249408, query id 51 localhost root updating
DELETE FROM t WHERE i = 1
------- TRX HAS BEEN WAITING 23 SEC FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 4 page no 4 n bits 72 index GEN_CLUST_INDEX of table `test`.`t`
trx id 7747 lock_mode X waiting
Record lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 0
0: len 6; hex 000000000202; asc ;;
1: len 6; hex 000000001e41; asc A;;
2: len 7; hex 820000008b0110; asc ;;
3: len 4; hex 80000001; asc ;;
------------------
TABLE LOCK table `test`.`t` trx id 7747 lock mode IX
RECORD LOCKS space id 4 page no 4 n bits 72 index GEN_CLUST_INDEX of table `test`.`t`
trx id 7747 lock_mode X waiting
Record lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 0
0: len 6; hex 000000000202; asc ;;
1: len 6; hex 000000001e41; asc A;;
2: len 7; hex 820000008b0110; asc ;;
3: len 4; hex 80000001; asc ;;
--------
FILE I/O
--------
I/O thread 0 state: waiting for i/o request (insert buffer thread)
I/O thread 1 state: waiting for i/o request (log thread)
I/O thread 2 state: waiting for i/o request (read thread)
I/O thread 3 state: waiting for i/o request (read thread)
I/O thread 4 state: waiting for i/o request (read thread)
I/O thread 5 state: waiting for i/o request (read thread)
I/O thread 6 state: waiting for i/o request (write thread)
I/O thread 7 state: waiting for i/o request (write thread)
I/O thread 8 state: waiting for i/o request (write thread)
I/O thread 9 state: waiting for i/o request (write thread)
Pending normal aio reads: [0, 0, 0, 0] , aio writes: [0, 0, 0, 0] ,
ibuf aio reads:, log i/o's:, sync i/o's:
Pending flushes (fsync) log: 0; buffer pool: 0
833 OS file reads, 605 OS file writes, 208 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
merged operations:
insert 0, delete mark 0, delete 0
discarded operations:
insert 0, delete mark 0, delete 0
Hash table size 553253, node heap has 0 buffer(s)
Hash table size 553253, node heap has 1 buffer(s)
Hash table size 553253, node heap has 3 buffer(s)
Hash table size 553253, node heap has 0 buffer(s)
Hash table size 553253, node heap has 0 buffer(s)
Hash table size 553253, node heap has 0 buffer(s)
Hash table size 553253, node heap has 0 buffer(s)
Hash table size 553253, node heap has 0 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s
---
LOG
---
Log sequence number 19643450
Log buffer assigned up to 19643450
Log buffer completed up to 19643450
Log written up to 19643450
Log flushed up to 19643450
Added dirty pages up to 19643450
Pages flushed up to 19643450
Last checkpoint at 19643450
129 log i/o's done, 0.00 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 2198863872
Dictionary memory allocated 409606
Buffer pool size 131072
Free buffers 130095
Database pages 973
Old database pages 0
Modified db pages 0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 810, created 163, written 404
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 973, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
----------------------
INDIVIDUAL BUFFER POOL INFO
----------------------
---BUFFER POOL 0
Buffer pool size 65536
Free buffers 65043
Database pages 491
Old database pages 0
Modified db pages 0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 411, created 80, written 210
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 491, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
---BUFFER POOL 1
Buffer pool size 65536
Free buffers 65052
Database pages 482
Old database pages 0
Modified db pages 0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 399, created 83, written 194
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 482, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
0 read views open inside InnoDB
Process ID=5772, Main thread ID=140286437054208 , state=sleeping
Number of rows inserted 57, updated 354, deleted 4, read 4421
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================
Разделы вывода монитора по умолчанию
Для описания каждого показателя, отчётного монитором по умолчанию, обратитесь к главе Метрики в руководстве пользователя Oracle Enterprise Manager for MySQL Database User's Guide.
-
StatusЭтот раздел отображает метку времени, имя монитора и количество секунд, на которых основаны средние значения за секунду. Количество секунд — это время, прошедшее между текущим временем и последним временем, когда
InnoDBбыл напечатан вывод монитора. -
BACKGROUND THREADСтроки
srv_master_threadпоказывают работу основного фонового потока. -
SEMAPHORESЭтот раздел отчитывается о потоках, ожидающих семафор, и статистике о том, сколько раз потокам потребовалось ожидание или ожидание на семафор мьютекса или семафора rw-блокировки. Большое количество потоков, ожидающих семафоров, может быть результатом ввода-вывода с диска или проблем с конкуренцией внутри
InnoDB. Конкуренция может быть вызвана сильным параллелизмом запросов или проблемами в планировании потоков операционной системы. Уменьшение системной переменнойinnodb_thread_concurrencyниже значения по умолчанию может помочь в таких ситуациях. СтрокаSpin rounds per waitпоказывает количество циклов спин-блокировки на ожидание ОС мьютекса.Метрики мьютексов отчитываются с помощью
SHOW ENGINE INNODB MUTEX. -
LATEST FOREIGN KEY ERRORЭтот раздел предоставляет информацию о самой последней ошибке ограничения внешнего ключа. Он отсутствует, если такая ошибка не произошла. Содержимое включает в себя запрос, который не выполнился, а также информацию об ограничении, которое не выполнилось, и о связанных и ссылающихся таблицах.
-
LATEST DETECTED DEADLOCKЭтот раздел предоставляет информацию о самом последнем тупике. Он отсутствует, если тупик не произошёл. Содержимое показывает, какие транзакции участвуют, какую инструкцию каждая из них пыталась выполнить, какие блокировки у них есть и какие необходимы, и какую транзакцию
InnoDBбыло решено откатить, чтобы разорвать тупик. Режимы блокировок, указанные в этом разделе, объяснены в Разделе 17.7.1, «Блокировки InnoDB». -
TRANSACTIONSЕсли в этом разделе указаны ожидания блокировок, в ваших приложениях может возникнуть конкуренция за блокировки. Вывод также может помочь проследить причины тупиков транзакций.
-
FILE I/OЭтот раздел предоставляет информацию о потоках, которые
InnoDBиспользует для выполнения различных типов ввода-вывода. Первые несколько из них предназначены для общегоInnoDBобработки. Содержимое также отображает информацию о запланированных операциях ввода-вывода и статистику производительности ввода-вывода.Количество этих потоков управляется параметрами
innodb_read_io_threadsиinnodb_write_io_threads. См. Раздел 17.14, «Параметры запуска и системные переменные InnoDB». -
INSERT BUFFER AND ADAPTIVE HASH INDEXВ этом разделе отображается состояние буфера вставки
InnoDB(также называемого) и адаптивного индекса хеширования.Для получения дополнительной информации см. Раздел 17.5.2, «Буфер изменений» и Раздел 17.5.3, «Адаптивный индекс хеширования».
-
LOGВ этом разделе отображается информация о журнале
InnoDB. Содержимое включает в себя текущее число последовательности журнала, до какой точки журнал был сброшен на диск и позицию, в которойInnoDBвыполнил последнюю контрольную точку. (См. Раздел 17.11.3, «Контрольные точки InnoDB».) Раздел также отображает информацию о запланированных операциях записи и статистику производительности записи. -
BUFFER POOL AND MEMORYВ этом разделе представлена статистика о чтении и записи страниц. По этим числам можно рассчитать, сколько операций ввода-вывода с файлами данных в настоящее время выполняют ваши запросы.
Для описаний статистики буфера пула обратитесь к Мониторинг буфера пула с помощью монитора InnoDB по умолчанию. Дополнительную информацию об использовании буфера пула см. в Разделе 17.5.1, «Буфер пула».
-
ROW OPERATIONSЭтот раздел показывает, что делает основной поток, включая количество и скорость выполнения каждого типа операций с записями.
© 2025 Oracle
Licensed under the GPLv2 License.