1. Glossario/

Hit ratio

Buffer Pool hit ratio

L’hit ratio misura quante letture di pagine InnoDB vengono soddisfatte direttamente dal Buffer Pool, senza accedere al disco. È l’indicatore primario dell’efficacia della memoria allocata a InnoDB: un valore alto significa che la working set dei dati caldi sta in RAM; un valore basso significa I/O fisico frequente e latenze più alte.

Come si legge #

MySQL esprime l’hit ratio nell’output di SHOW ENGINE INNODB STATUS nella sezione BUFFER POOL AND MEMORY, con la formula:

Buffer pool hit rate X / 1000

Un valore di 997 / 1000 significa che 997 letture su 1000 sono state servite dalla memoria. La soglia operativa comunemente accettata è 990/1000: scendere sotto indica che il Buffer Pool è sottodimensionato rispetto al working set attivo.

Contesto operativo #

L’hit ratio è particolarmente instabile dopo un restart di MySQL: il Buffer Pool è freddo e le prime query generano page fault a cascata, abbassando il valore anche sotto 900/1000. InnoDB supporta il dump e il reload automatico del Buffer Pool (innodb_buffer_pool_dump_at_shutdown / innodb_buffer_pool_load_at_startup) proprio per accelerare il warm-up.

Un hit ratio cronicamente basso non si risolve solo aumentando innodb_buffer_pool_size: occorre anche verificare se query inefficienti eseguono full scan su tabelle grandi, evitando così di inquinare il Buffer Pool con pagine usate una volta sola.