06.09.2014 Views

Bases de datos: Software libre - Universitat Oberta de Catalunya

Bases de datos: Software libre - Universitat Oberta de Catalunya

Bases de datos: Software libre - Universitat Oberta de Catalunya

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

© FUOC • 71Z799014MO 55 <strong>Bases</strong> <strong>de</strong> <strong>datos</strong> en MySQL<br />

5.5. Análisis y optimización<br />

El diseño <strong>de</strong> MySQL le permite funcionar con un rendimiento notable, sin embargo,<br />

se pue<strong>de</strong>n cometer fácilmente errores que disminuyan la capacidad <strong>de</strong><br />

respuesta <strong>de</strong>l servidor. También se pue<strong>de</strong>n realizar algunos ajustes a la configuración<br />

<strong>de</strong> MySQL que incrementan su rendimiento.<br />

5.5.1. In<strong>de</strong>xación<br />

La in<strong>de</strong>xación es la principal herramienta para optimizar el rendimiento general<br />

<strong>de</strong> cualquier base <strong>de</strong> <strong>datos</strong>. Es también la más conocida por los usuarios<br />

<strong>de</strong> servidores MySQL y, paradójicamente, su no utilización es una <strong>de</strong> las principales<br />

causas <strong>de</strong> bajo rendimiento en servidores <strong>de</strong> bases <strong>de</strong> <strong>datos</strong>.<br />

Muchos administradores y diseñadores simplemente parecen olvidar usar índices para optimizar<br />

los accesos a las bases <strong>de</strong> <strong>datos</strong>. Por otro lado, algunas personas tien<strong>de</strong>n a in<strong>de</strong>xar todo,<br />

esperando que <strong>de</strong> esta manera el servidor acelere cualquier tipo <strong>de</strong> consulta que se le solicite.<br />

En realidad, esta práctica pue<strong>de</strong> causar una disminución en el rendimiento, sobre todo en lo<br />

que respecta a inserciones y modificaciones.<br />

Para ver las ventajas <strong>de</strong> utilizar índices, analizaremos en primer término una<br />

simple búsqueda en una tabla sin índice alguno:<br />

• El constante acceso <strong>de</strong> escritura <strong>de</strong> una tabla la mantiene <strong>de</strong>sor<strong>de</strong>nada.<br />

• La or<strong>de</strong>nación <strong>de</strong> una tabla es una operación costosa: el servidor tendría<br />

que <strong>de</strong>tenerse un tiempo consi<strong>de</strong>rable para or<strong>de</strong>nar sus tablas.<br />

• Muchas tablas tienen más <strong>de</strong> un criterio <strong>de</strong> or<strong>de</strong>nación: or<strong>de</strong>nar según una<br />

columna implica <strong>de</strong>sor<strong>de</strong>nar otra.<br />

• La inserción y eliminación <strong>de</strong> <strong>datos</strong> sin alterar el or<strong>de</strong>n en una tabla es costosa:<br />

la inserción <strong>de</strong> un registro en una tabla gran<strong>de</strong> implicaría una larga<br />

espera en la actualización <strong>de</strong> la misma.<br />

• Si se opta por mantener la tabla <strong>de</strong>sor<strong>de</strong>nada (que es la opción más viable),<br />

una búsqueda implicaría forzosamente un recorrido secuencial (también<br />

<strong>de</strong>nominado full scan), registro por registro.<br />

El uso <strong>de</strong> índices en la or<strong>de</strong>nación <strong>de</strong> las bases <strong>de</strong> <strong>datos</strong> ofrece las ventajas siguientes:<br />

• Permite or<strong>de</strong>nar las tablas por varios criterios simultáneamente.<br />

• Es menos costoso or<strong>de</strong>nar un archivo índice, porque incluye sólo referencias<br />

a la información y no la información en sí.<br />

• El coste <strong>de</strong> inserción y eliminación es menor.<br />

• Con los registros siempre or<strong>de</strong>nados se utilizaran algoritmos mucho más<br />

eficientes que el simple recorrido secuencial en las consultas.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!