O buffer pool é grande o suficiente: hit ratio, wait_free e redimensionamento online
MySQLMemóriaComando
SELECT ROUND(@@innodb_buffer_pool_size / 1024 / 1024) AS bp_mb,
@@innodb_buffer_pool_chunk_size / 1024 / 1024 AS chunk_mb,
@@innodb_buffer_pool_instances AS instances;
SELECT
ROUND(100 * (1 - (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_reads')
/ NULLIF((SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_read_requests'), 0)), 3) AS hit_pct,
(SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_pages_free') AS pages_free,
(SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_pages_dirty') AS pages_dirty,
(SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_wait_free') AS wait_free;
-- Online resize and status tracking
SET PERSIST innodb_buffer_pool_size = 8589934592;
SELECT VARIABLE_NAME, VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME LIKE 'Innodb_buffer_pool_resize_status%';O que faz
Mostra o tamanho do buffer pool, o hit ratio do cache, a contagem de páginas livres / sujas e o contador de espera por página livre (wait_free); redimensiona-o sem restart e acompanha o progresso.
Quando usar
Quando o IO de leitura está alto, após adicionar / remover RAM ou durante o planejamento de capacidade.
Atenção
O hit ratio sozinho engana; até 99% pode significar milhares de leituras em disco por segundo. Observe o crescimento por segundo de Innodb_buffer_pool_reads; wait_free > 0 significa que o buffer pool é pequeno demais ou que os page cleaners não dão conta. O novo tamanho é arredondado para um múltiplo de innodb_buffer_pool_chunk_size × instâncias. Pequenas paradas são possíveis durante o redimensionamento, mais ainda ao reduzir; evite horários de pico. Em um servidor dedicado comece com 60–75% da RAM; deixe espaço para a memória por conexão, o cache do SO e outros processos, pois swap é sempre pior que um buffer pool menor.