1. Glossario/

Buffer pool warm-up

Buffer pool preloading

Quando MySQL si riavvia, il buffer pool è vuoto: ogni query deve leggere da disco finché le pagine più usate non tornano in memoria. Il buffer pool warm-up è il processo che accelera questo rientro a regime, ripristinando le pagine calde prima che il traffico produzione le richieda.

Come funziona #

InnoDB può salvare gli identificatori delle pagine presenti in memoria al momento dello shutdown e ricaricarli all’avvio successivo. Due variabili di sistema controllano il comportamento:

-- Abilita dump automatico allo shutdown
SET GLOBAL innodb_buffer_pool_dump_at_shutdown = ON;

-- Abilita load automatico all'avvio (va impostato in my.cnf)
-- innodb_buffer_pool_load_at_startup = ON

Il file prodotto (ib_buffer_pool) contiene coppie (tablespace_id, page_id), non i dati effettivi: è leggero e il ripristino avviene in background senza bloccare le connessioni in ingresso. La variabile innodb_buffer_pool_dump_pct (default 25) limita la percentuale di pagine serializzate, bilanciando completezza e tempo di dump.

Quando si usa #

Il warm-up è rilevante in tre scenari principali:

  • Restart pianificati (patching OS, upgrade MySQL): senza warm-up, il hit ratio può restare sotto il 50% per ore su istanze con buffer pool da decine di GB.
  • Failover su replica: la replica promossa a primary parte con buffer pool freddo; abilitare dump/load anche sulle repliche riduce il degrado post-failover.
  • Ambienti cloud con istanze spot/preemptible: il ciclo stop-start frequente rende il warm-up automatico quasi obbligatorio.

Il progresso del load è monitorabile in tempo reale:

SHOW STATUS LIKE 'Innodb_buffer_pool_load_status';