DBAtlas · Atlas d'exploitation des bases de données

Le buffer pool est-il assez grand : hit ratio, wait_free et redimensionnement en ligne

MySQLMémoire

Commande

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%';

Ce que fait la commande

Affiche la taille du buffer pool, le taux de succès du cache, le nombre de pages libres / sales et le compteur d'attente de pages libres (wait_free) ; le redimensionne sans redémarrage et suit la progression.

Quand l'utiliser

Quand l'IO en lecture est élevé, après ajout / retrait de RAM ou lors de la planification de capacité.

Attention

Le hit ratio seul est trompeur ; même 99 % peut signifier des milliers de lectures disque par seconde. Regardez la croissance par seconde de Innodb_buffer_pool_reads ; wait_free > 0 signifie que le buffer pool est trop petit ou que les page cleaners ne suivent pas. La nouvelle taille est arrondie à un multiple de innodb_buffer_pool_chunk_size × instances. De brefs blocages sont possibles pendant un redimensionnement, davantage lors d'une réduction ; évitez les heures de pointe. Sur un serveur dédié, commencez à 60–75 % de la RAM ; laissez de la place pour la mémoire par connexion, le cache de l'OS et les autres processus, car le swap est toujours pire qu'un buffer pool plus petit.

Ouvrir dans DBAtlas →