Ideas para optimizar MySQL

Cuando trabajamos con programas OpenSource es muy probable que terminemos usando MySQL 5.0, y cuando lo hacemos durante varios meses, también es muy probable que acabemos administrándolo, e intentando mejorar el redimiento. Para conseguirlo, os propongo tres posibles mejoras:

  1. La primera, es que usemos ext4 o xfs como sistema de archivos para /var/lib/mysql. Estos sistemas de archivos consiguen más velocidad y rendimiento que ext3.
  2. La segunda, consiste en usar un fichero por cada tabla innodb, para lo cual habrá que añadir la siguiente línea a la sección [mysqld] en /etc/mysql/my.cnf,
    innodb_file_per_table
    Esto evitará que el fichero /var/lib/mysql/ibdata1 crezca sin límite, alamcenando en él todos los datos de nuestra BBDD y siendo este fichero cuello de botella para el acceso a disco. Si este fichero se dañara perderíamos todas las bases de datos. Con esta optimización, lo que hacemos es que cada tabla MYSQL tenga su propio fichero bajo su correspondiente subdirectorio en /var/lib/mysql.Después de aplicar este cambio y reiniciar el servicio, tendremos que exportar e importar cada una de las base de datos que tuviéramos configuradas.
  3. La tercera consiste en aplicar algunas mejoras en la configuración, que encontramos en la comparativa http://developer.cybozu.co.jp/kazuho/2009/12/comparing-innod.html?lang=en, dentro de la sección tunning del fichero /etc/mysql/my.cnf:
    innodb_buffer_pool_size = 2048M
    innodb_log_file_size = 64M
    innodb_flush_method=O_DIRECT
    innodb_flush_log_at_trx_commit=2
    key_buffer_size=64M
    myisam_sort_buffer_size=32M

La foto la he sacado del album de Nanaki en flickr

No hay comentarios: