Buffer pool warm-up
Buffer pool preloading
Când MySQL repornește, buffer pool-ul este gol: fiecare interogare trebuie să citească de pe disc până când paginile cele mai utilizate revin în memorie. Buffer pool warm-up este procesul care accelerează această revenire la regim normal, restaurând paginile fierbinți înainte ca traficul de producție să le solicite.
Cum funcționează #
InnoDB poate salva identificatorii paginilor rezidente în memorie la momentul shutdown-ului și să îi reîncarce la următoarea pornire. Două variabile de sistem controlează comportamentul:
-- Activează dump-ul automat la oprire
SET GLOBAL innodb_buffer_pool_dump_at_shutdown = ON;
-- Activează încărcarea automată la pornire (se setează în my.cnf)
-- innodb_buffer_pool_load_at_startup = ON
Fișierul generat (ib_buffer_pool) conține perechi (tablespace_id, page_id), nu datele efective: este ușor ca dimensiune, iar restaurarea rulează în fundal fără a bloca conexiunile primite. Variabila innodb_buffer_pool_dump_pct (implicit 25) limitează procentul de pagini serializate, echilibrând completitudinea cu timpul de dump.
Când se folosește #
Warm-up-ul este relevant în trei scenarii principale:
- Reporniri planificate (patch-uri OS, upgrade-uri MySQL): fără warm-up, hit ratio-ul poate rămâne sub 50% ore întregi pe instanțe cu buffer pool-uri de zeci de GB.
- Failover pe replică: o replică promovată la primary pornește cu buffer pool-ul rece; activarea dump/load și pe replici reduce degradarea post-failover.
- Medii cloud cu instanțe spot/preemptible: ciclurile frecvente de oprire-pornire fac warm-up-ul automat aproape obligatoriu.
Progresul încărcării poate fi monitorizat în timp real:
SHOW STATUS LIKE 'Innodb_buffer_pool_load_status';