Optimización de Índices y Monitoreo en MySQL
Clasificado en Informática
Escrito el en español con un tamaño de 4,2 KB
Herramientas y Sentencias para la Gestión de Índices en MySQL
Los índices son una estructura de datos que permiten un acceso rápido a los registros de la tabla en la que están definidos, aumentando de este modo la velocidad de las operaciones sobre esos datos.
Para ver los índices que hay definidos utilizamos:
SHOW {INDEX | INDEXES | KEYS}
{FROM | IN} tabla [{FROM | IN} base_datos]
[WHERE expresión]
Los índices no pueden ser actualizados directamente, sino que deben ser eliminados y creados nuevamente con las modificaciones que deseemos introducir en ellos.
Para eliminar los índices podemos hacerlo de forma directa, usando DROP INDEX, o también realizando una modificación de la estructura de la tabla empleando la sentencia ALTER TABLE sobre la tabla que lo define.
Con el comando OPTIMIZE TABLE podemos actualizar y reordenar los índices al tiempo que desfragmenta el fichero de datos asociado a la tabla. Funciona del siguiente modo:
- Si la tabla ha borrado o dividido registros, repara la tabla.
- Si las páginas índices no están ordenadas, las ordena.
- Si las estadísticas no están actualizadas, y la reparación no es posible ordenando el índice, las actualiza.
El comando OPTIMIZE TABLE se emplea para tablas MyISAM e InnoDB, pero con este último motor es preferible usar ANALYZE TABLE.
Los tipos de índice que maneja MySQL son:
- UNIQUE: formado por campos cuyo valor no se repite en la tabla.
- PRIMARY: son los que forman la clave primaria de una tabla. Se recomienda que sean numéricos.
- FULL-TEXT: formados por uno o varios campos de texto, y se suelen usar para buscar palabras dentro de un campo, buscando cadenas sobre todo en tablas MyISAM.
- SPATIAL: índices usados para caracteres especiales. Puede usarse con columnas: CHAR, VARCHAR y TEXT, para lo que se suelen usar índices parciales. Un índice parcial es el que se forma con parte de las posiciones de una columna.
Herramientas para la Creación de Alertas de Rendimiento
Existen distintas herramientas que nos permiten monitorizar nuestros servidores de bases de datos.
Unas son las utilidades que nos vienen incluidas en el SGBD utilizando a través de consola o del entorno gráfico que hayamos escogido (MySQL Workbench o MySQL Query Browser), las utilidades proporcionadas a través del programa de línea de comando mysqladmin e incluso con las opciones de configuración gráficas que dan MySQL Workbench o MySQL Administrator. Aun así, existen otro tipo de herramientas que están preparadas para realizar estas tareas, como pueden ser MySQL Enterprise Monitor, SQLyog o Monyog.
MySQL Enterprise Monitor y Monyog se encargan de realizar la monitorización de nuestro SGBD, proporcionando alertas de funcionamiento cuando los parámetros medidos en el servidor alcanzan unos valores umbral que hacen que salten el aviso.
Otras opciones son, por ejemplo, innotop o mtop, que se emplean para monitorizar en modo consola las características internas del motor InnoDB el primero y los procesos MySQL el segundo.
Dentro de las herramientas que pone a nuestra disposición el sistema, contamos con las distintas opciones de SHOW, que nos dan información sobre todos los objetos que tenemos en nuestra BD. Como la respuesta devuelta puede ser muy larga, es recomendable lanzarla para que se escriba en un fichero, como por ejemplo:
~ruta> mysql -e "SHOW ENGINE INNODB STATUS" > ruta_data/innodb_status.txt
También disponemos de mysqladmin, que es un cliente para tareas de administración. La sintaxis del programa es:
# mysqladmin [opciones] comando [argumentos-comando] [comando [argumentos-comando]]