27 de abril de 2012

Como optimizar el servidor MySQL

Una vez que tienes diseñada y funcionando tu base de datos MySQL la siguiente tarea es mejorar su rendimiento para que el tiempo de búsqueda se el menor posible.
La configuración del fichero /etc/mysql/my.cnf que viene por defecto al instalar MySQL  funciona bien para bases de datos pequeñas y sin muchas exigencias, pero no es óptimo para basesde datos grandes y de alto rendimiento.

Pero ¿Como modificar el fichero my.cnf de configuracion del servidor MySQL?

He encontrado estas herramientas de diagnóstico del funcionameinto de MySQL, evaluando la configuracion actual, recomendando modicifaciones en el /etc/mysql/my.cnf que podemos ir pobando y ver si mejoran el rendiemiento del servidor.

1) MySQL Tuning Primer Script
Se trata de un script escrito en Bash, que revisa la actividad del servidor MySQL y lo compara con la configuración actual.
Lo descargamos de
https://launchpad.net/mysql-tuning-primer/trunk/1.6-r1/+download/tuning-primer.sh
le damos permisos de ejecución, lo ejecutamos, ...y vemos el resultado:


En este caso se trata de una base de datos muy grande y ya me gustaria disponer de mas de 4,7GB de RAM para MySQL !!!

Es una muy buena herramienta y que me ha ayudado muchoa a optimizar mis voluminosas bases de datos.


2) Otra herramienta de diagnótico para optimizar MySQL es mysqltuner, escrita en Perl.

Es complementaria a la anterior y presenta los datos de forma mas compacta, con las recomendaciones al final.



Y ademas coincide en el diagnóstico con la anterior!!!.
Esta visto que tendré que aumentar el key_buffer_size de mi mysqld y la memoria RAM.


Teneis mas informacion sobre el tema en mi buscador de documentos pdf
www.pedeefes.com, buscando con las palabras: mysql optimization.

8 de abril de 2012

MySQL: Mostrar toda la información de las tablas

Para mostrar toda la información de las tabals de la base de datos activa:

mysql> SHOW TABLE STATUS;

y de una tabla en particular:

 mysql> SHOW TABLE STATUS LIKE 'tablename';

Tamaño de las bases de datos en MySQL

Este comando MySQL indica todas las bases de datos en MySQL y su tamaño en MB.

mysql> SELECT table_schema, sum( data_length + index_length ) / 1024 / 1024 "Tamaño en MB" FROM  information_schema.TABLES GROUP BY table_schema;


 http://forums.mysql.com/read.php?108,201578,201578

MySQL: Contar las tuplas de todas las tablas de una base de datos


mysql> select table_schema, sum(table_rows) from information_schema.tables where table_schema = "nombre-base-de-datos"