Le buffer pool est-il assez grand : hit ratio, wait_free et redimensionnement en ligne
MySQLMémoireCommande
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.