MySQL Index Analyzer es una sencilla aplicación creada en Java que nos analiza los Ãndices de una base de datos en MySQL. Comprueba qué Ãndices no son útiles desde la perspectiva de la BD.
Por ejemplo, para todas Ãndices de las tablas que cubre los campos que son primary key, en este caso es útil porque este Ãndice no se usará nunca por el optimizador.
A parte de un informe, nos devuelve scripts para resolver los problemas.
MySQL Index Analyzer
Tag Archives: mysql optimizacion
Optimizaciones para MySQL
Ya el otro dÃa hablábamos sobre las optimizaciones que podrÃamos realizar en nuestro entorno LAMP referente a Apache y PHP. Ahora, la gente de IBM nos vuelve a ofrecer otro artÃculo en el que nos indican cosas que hacer para mejorar el rendimiento de nuestra base de datos MySQL.
Las mejoras que se pueden realizar se dividen en tres conceptos: optimizar la máquina, configurar el proceso de MySQL y optimizar las querys. El servidor de base de datos nos puede dar problemas ya que una base de datos consume muchos recursos, lo cual se puede solucionar en muchos casos mejorando la CPU y la velocidad de disco duro, y si no, aumentar la RAM, cosas lógicas y normales.
Para la optimización de MySQL y el tratamiento de las querys lentas, se pueden realizar varias acciones. La primera de ella serÃa tener un log de qué querys emplean mucho tiempo en ejecutarse, para lo cual deberemos cambiar en la configuración de MySQL el parámetro log-slow-queries para que se guarden qué querys tardan más de cierto tiempo.
Otro tema importante es cachear las querys que se realizan, para ello hay dos formas, la que nos cuentan en el artÃculo, que es mediante configuración, y la otra que es mediante código, porque si lo realizamos mediante código podemos controlar mejor que querys cacheamos.
Al igual que ocurre en Apache, en MySQL es importante controlar el número máximo de conexiones, el timeout y el número máximo de errores, ya que si configuramos mal estos valores nos podemos encontrar con rendimientos poco deseados.
En total, una serie de recomendaciones muy buenas que debemos tener en cuenta cuando nuestra aplicación web requiere ajustar los recursos al máximo.
Tuning LAMP systems, Part 3: Tuning your MySQL server
10 consejos para mejorar tus queries MySQL
10 interesantes consejos a seguir para mejorar nuestras sentencias en MySQL, algunas de ellas para poder optimizar las ya creadas.
- Usa el comando explain: el comando explain te puede ayudar a identificar los Ãndices que se usan y además te proporciona más información útil.
- Usa permisos menos complejos: usar permisos más sencillos evita que se comprueben muchas condiciones en cada ejecución de una sentencia.
- Comando benchmark: este comando nos permite saber cuánto tiempo tarda en ejecutarse una expresión.
- Optimiza tus cláusulas: ya sea quitando paréntesis innecesarios, usando count(*) sin condiciones en el where ya que tira de tablas internas de MyQSL o usando la opción SQL_SMALL_RESULT para usar tablas temporales en memoria.
- Ejecuta optimize table: defragmenta una tabla después de varios borrados, el acceso a disco es algo importante a tener en cuenta.
- Evita campos de longitud variable: en tablas de frecuente actualización evita campos como VARCHAR, BLOB o TEXT.
- Usa insert delayed: solo cuando sea no importe cuando se inserten los datos.
- Prioridades en las sentencias: usa INSERT LOW_PRIORITY para darle a las consultas mayor prioridad, o usa SELECT HIGH_PRIORITY para ejecutar una consulta aunque haya otros clientes esperando.
- Haz múltiples inserciones en una única sentencia: en vez de varias sentencias de una única inserción.
- Sincroniza tipos de datos: mismos datos en tablas diferentes deben ser del mismo tipo de datos.
Yo siempre he tenido una duda, que no he resuelto por pereza, sobre el caso de ejecutar count(*) o count(1). La leyenda urbana dice que es mejor count(1), ya que de la otra forma obtienes que enviar todas las columnas, al igual que haces en un select *. Un consultor en Oracle nos dijo que era falsa esa afirmación porque tardaba lo mismo, yo creo que también, entre otras cosas porque seguro que ese punto está optimizado, pero claro, que sea consultor o que sea de Oracle no quiere decir nada, y menos aún si hablamos de otras bases de datos.
10 tips for optimizing mysql queries
VÃa / Alex Sancho