MySQL tuning variables, parámetros para el motor INNODB

Continuando con el tuning MySQL ahora vamos a tocar de forma específica el motor INNODB.

Esta entrada está relacianada con la «MySQL, tuning de parámetros para cualquier motor«, vamos a trabajar a partir de estados y según el resultado ver que variables podemos modificar para mejorar los resultados.

En la entrada «Variables y estados en MySQL» ya se trató el tema de las variables y estados del servidor.

La documentación de todos las variables la podemos encontrar en:
http://dev.mysql.com/doc/refman/5.5/en/dynamic-system-variables.html

Y para los estados en:
http://dev.mysql.com/doc/refman/5.5/en/server-status-variables.html

Estados o relaciones que afectan a INNODB:

  • Innodb_buffer_pool_pages_data/Innodb_buffer_pool_pages_total*100, porcentaje de página ocupadas por el buffer pool. Si tenemos un 100% si es posible deberíamos aumentar el valor de la variable:

innodb_buffer_pool_size

  • Innodb_log_waits/Innodb_log_write_requests*100, porcentaje del número de veces que el log buffer es demasiado pequeño para la escritura de una operación y se ha producido una espera para su escritura en el log file. Si el valor es pequeño necesitamos ampliar el valor de la variable:

innodb_log_file_size

  • (Innodb_rows_deleted+Innodb_rows_inserted+Innodb_rows_updated)/Innodb_rows_read*100, porcentaje de modificaciones que se producen en la BD, este valor puede ser útil para poner en evidencia la inutilidad de algunos log files realmente grandes.

Además en un entorno de producción es más que recomendable tener fijadas las variables:

  • innodb_flush_log_at_trx_commit=1, hace un flush del log_buffer al log file en cada commit de transacción, es lo más seguro (0- cada segundo, 2- hace un flush del log buffer pero no se garantiza que se escriba en el log file en ese momento)

Deja un comentario