systemadmin.es > DBA > MySQLTuner: Automatización del tuning de una base de datos MySQL

MySQLTuner: Automatización del tuning de una base de datos MySQL

MySQLTuner es una herramienta que realiza comprobaciones al MySQL para dar una serie de recomendaciones sobre su optimización.

Su uso es extremadamente sencillo:

$ wget mysqltuner.pl
(...)
$ perl mysqltuner.pl 

 >>  MySQLTuner 1.0.0 - Major Hayden <major@mhtx.net>
 >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
 >>  Run with '--help' for additional options and output filtering
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password: 

-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.0.67
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster 
[--] Data in MyISAM tables: 5M (Tables: 265)
[--] Data in InnoDB tables: 2M (Tables: 116)
[--] Data in MEMORY tables: 0B (Tables: 5)
[OK] Total fragmented tables: 0

-------- Performance Metrics -------------------------------------------------
[--] Up for: 1d 10h 48m 46s (173K q [1.382 qps], 14K conn, TX: 999M, RX: 22M)
[--] Reads / Writes: 95% / 5%
[--] Total buffers: 26.0M global + 832.0K per thread (100 max threads)
[OK] Maximum possible memory usage: 107.3M (11% of installed RAM)
[!!] Slow queries: 14% (25K/173K)
[OK] Highest usage of available connections: 10% (10/100)
[!!] Key buffer size / total MyISAM indexes: 16.0K/4.9M
[!!] Key buffer hit rate: 87.4% (1M cached / 171K reads)
[!!] Query cache is disabled
[OK] Sorts requiring temporary tables: 0% (12 temp sorts / 32K sorts)
[!!] Temporary tables created on disk: 37% (9K on disk / 24K total)
[OK] Thread cache hit rate: 99% (45 created / 14K connections)
[!!] Table cache hit rate: 0% (4 open / 56K opened)
[OK] Open file limit used: 0% (4/1K)
[OK] Table locks acquired immediately: 100% (151K immediate / 151K locks)
[OK] InnoDB data size / buffer pool: 2.1M/8.0M

-------- Recommendations -----------------------------------------------------
General recommendations:
    Enable the slow query log to troubleshoot bad queries
    When making adjustments, make tmp_table_size/max_heap_table_size equal
    Reduce your SELECT DISTINCT queries without LIMIT clauses
    Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
    long_query_time (<= 10)
    key_buffer_size (> 4.9M)
    query_cache_size (>= 8M)
    tmp_table_size (> 32M)
    max_heap_table_size (> 16M)
    table_cache (> 4)

Se trata de un script en perl que realiza de forma automática consultas a la base de datos para saber su estado para poder sugerir mejoras en la configuración.

Evidentemente como todo script, es una guia para ayudar a mejorar el rendimiento del sistema, nunca una substitución del DBA. Por ejemplo, este script si se deshabilita la query_cache se queja con el siguiente mensaje:

[!!] Query cache is disabled

En determinados casos de uso de MySQL (una base de datos con muchas invalidaciones, como puede ser un foro) esta cache hace más daño al rendimiento activandola que desactivandola, ya que se “pierde” más tiempo gestionando la cache que el que se recupera si alguna vez se recuperan datos desde allí.

4 comments to “MySQLTuner: Automatización del tuning de una base de datos MySQL”

  1. En la primera línea hay algo que hace que mis ojos ardan…
    Es “comprobaciones” y no *comprovaciones*

    Un saludo, y seguid en esta línea, teneis una página bastante interesante.

  2. Corregido! muchas gracias.

    Tengo que instalar un corrector porque no es la primera y seguro que tampoco será la última 🙁

    saludos!

  3. Un pequeño tip.. el autor de esta aplicación tiene también un dominio bastante mnemotécnico “mysqltuner.pl”, y lo ha preparado para descargarlo de forma rápida y cómoda, tan sencillo como:

    $ wget mysqltuner.pl

    Además, desde hace unos meses el paquete ya está oficialmente en Debian Lenny 🙂

    Aunque algo abandonado el proyecto, en la misma linea está “mysqlar”, con la misma idea que este.. pero con una interfaz web:

    http://gert.sos.be/demo/mysqlar/

  4. Ahora lo entiendo xD

    Lo vi en la web wget y pensé: Este se ha dejado la URL, que raro.

    Ahora todo me cuadra. Gracias!

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>