¿Es suficiente el buffer pool?: hit ratio, wait_free y redimensionamiento en línea
MySQLMemoriaComando
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%';Qué hace
Muestra el tamaño del buffer pool, la tasa de aciertos de caché, el número de páginas libres / sucias y el contador de esperas de página libre (wait_free); lo redimensiona sin reinicio y sigue el progreso.
Cuándo usarlo
Cuando el IO de lectura es alto, después de añadir / quitar RAM o durante la planificación de capacidad.
Precaución
El hit ratio por sí solo engaña; incluso un 99% puede significar miles de lecturas de disco por segundo. Mire el crecimiento por segundo de Innodb_buffer_pool_reads; wait_free > 0 significa que el buffer pool es demasiado pequeño o que los page cleaners no dan abasto. El nuevo tamaño se redondea a un múltiplo de innodb_buffer_pool_chunk_size × instancias. Durante un redimensionamiento son posibles pausas breves, más al reducir; evite las horas pico. En un servidor dedicado empiece con el 60–75% de la RAM; deje margen para la memoria por conexión, la caché del SO y otros procesos, ya que el swapping siempre es peor que un buffer pool más pequeño.