SHOW INNODB STATUS e o Monitor InnoDB


A partir da versão 3.23.41, o InnoDB inclui o Monitor InnoDB que imprime informações sobre o estado interno do InnoDB. A partir das versões 3.23.52 e 4.0.3 você pode usar o comando SQL SHOW INNODB STATUS para trazer a saída do Monitor InnoDB padrão para o cliente SQL. os dados são úteis para ajuste do desempenho. Se você estiver usando o cliente SQL interativo MariaDB, a saída é mais legível se você substituir o ponto e vírgula normalmente usado no final das instruções por \G:

SHOW INNODB STATUS\G

Outro modo de usar os Monitores InnoDB é deixá-los gravando dados continuamente na saída padrão do servidor mysqld (nota: o cliente MariaDB não exibirá nada). Ao ser ligado, os Monitores InnoDB exibirá dados um vez a cada 15 segundos. Se você executar mysqld como um daemon então esta saída é normalmente direcionada para o log .err no datadir do MariaDB. Este dado é útil para ajuste do desempenho. No Windows você deve iniciar o mysqld-max a partir do Prompt do MSDOS com a opção --standalone --console para direcionar a saída para a janela do prompt do MS-DOS.

Existe um innodb_lock_monitor separada que imprime a mesma informação que innodb_monitor mais informações sobre travas configuradas por cada transação.

A informação impressa inclui dados sobre:

Você pode iniciar o Monitor InnoDB com o seguinte comando SQL:

CREATE TABLE innodb_monitor(a INT) type = innodb;

e pará-lo com

DROP TABLE innodb_monitor;

A sintaxe CREATE TABLE é só um modo de passar um comando ao mecanismo InnoDB através do analisador SQL do MariaDB: a tabela criada não é relevante para o Monitor InnoDB. Se você fechar o banco de dados quando o manitor estiver em execução, e você quiser iniciar o monitor novamente, você deve apagar a tabela antes de executar um novo CREATE TABLE para iniciar o monitor. A sinstaxe pode alterar em distribuição futuras.

Uma saída padrão do Monitor InnoDB:

================================
010809 18:45:06 INNODB MONITOR OUTPUT
================================
--------------------------
LOCKS HELD BY TRANSACTIONS
--------------------------
LOCK INFO:
Number of locks in the record hash table 1294
LOCKS FOR TRANSACTION ID 0 579342744
TABLE LOCK table test/mytable trx id 0 582333343 lock_mode IX RECORD LOCKS space id 0 page no 12758 n bits 104 table test/mytable index PRIMARY trx id 0 582333343 lock_mode X Record lock, heap no 2 PHYSICAL RECORD: n_fields 74; 1-byte offs FALSE;
info bits 0
 0: len 4; hex 0001a801; asc ;; 1: len 6; hex 000022b5b39f; asc ';;
 2: len 7; hex 000002001e03ec; asc ;; 3: len 4; hex 00000001;
...
-----------------------------------------------
CURRENT SEMAPHORES RESERVED AND SEMAPHORE WAITS
-----------------------------------------------
SYNC INFO:
Sorry, cannot give mutex list info in non-debug version!
Sorry, cannot give rw-lock list info in non-debug version!
-----------------------------------------------------
SYNC ARRAY INFO: reservation count 6041054, signal count 2913432
4a239430 waited for by thread 49627477 op. S-LOCK file NOT KNOWN line 0
Mut ex 0 sp 5530989 r 62038708 sys 2155035;
rws 0 8257574 8025336; rwx 0 1121090 1848344
-----------------------------------------------------
CURRENT PENDING FILE I/O'S
--------------------------
Pending normal aio reads:
Reserved slot, messages 40157658 4a4a40b8
Reserved slot, messages 40157658 4a477e28
...
Reserved slot, messages 40157658 4a4424a8
Reserved slot, messages 40157658 4a39ea38
Total of 36 reserved aio slots Pending aio writes:
Total of 0 reserved aio slots Pending insert buffer aio reads:
Total of 0 reserved aio slots Pending log writes or reads:
Reserved slot, messages 40158c98 40157f98
Total of 1 reserved aio slots Pending synchronous reads or writes:
Total of 0 reserved aio slots
-----------
BUFFER POOL
-----------
LRU list length 8034
Free list length 0
Flush list length 999
Buffer pool size in pages 8192
Pending reads 39
Pending writes: LRU 0, flush list 0, single page 0
Pages read 31383918, created 51310, written 2985115
----------------------------
END OF INNODB MONITOR OUTPUT
============================
010809 18:45:22 InnoDB starts purge
010809 18:45:22 InnoDB purged 0 pages

Algumas notas sobre a saída:

Retornar