Novacreations

Desarollando Software

Optimizando Mysql: Caches y Pools

Las bases de datos guardan su información en el disco duro y esta lectura al dispositivo de almacenamiento puede representar un importante cuello de botella. Es por eso que Mysql y otros manejadores de BD utilizan estrategias de Pools y Caches para mantener la información accedida frecuentemente en la memoria.

Cuando empezamos a aprender el uso de las bases de datos por lo regular pasa desapercibido este tema para nosotros. Pero al momento de trabajar con aplicaciones empresariales se deben de tomar en cuenta estas estrategias para asegurar una óptima utilización de los recursos con los que contamos. Es posible ajustar los valores de estas herramientas para adaptarnos a diferentes tipos de aplicación, por ejemplo si cuenta con altos niveles de lectura de datos o procesos transaccionales que leen y escriben constantemente.

MyISAM Key Cache

Nuestros datos se encuentran en archivos almacenados en el disco duro. Al hacer una solicitud Mysql busca en todo ese archivo por el dato que requerimos lo cual puede ser muy tardado si contamos con mucha información. La solución es la utilización de los índices que ayudan a crear un mapa que permite encontrar la información de inmediato (sin buscarla). Los índices también se almacenan en el disco duro por lo que si una aplicación tiene muchos accesos  (por ejemplo búsquedas de un sku o usuarios) la respuesta se degrada.

El Key Cache nos permite cargar los índices con un mayor uso en la memoria lo cual permite tener un mejor acceso.

El algoritmo es sencillo. Al hacer una solicitud Mysql busca en el cache si puede obtener la información sobre la ubicación de la información. Si no la encuentra carga esa información en el cache para que pueda ser accedida mas tarde. Si el cache se llena, se retira la información que tenga un mayor tiempo sin uso.

http://dev.mysql.com/doc/refman/5.5/en/myisam-key-cache.html

InnoDB Buffer Pool

Para tablas que se encuentran en InnoDB existe el Buffer Pool. Este es un buffer que además de guardar en cache los índices, guarda los datos que son obtenidos. Es posible tener un gran control sobre el buffer pool modificando sus parámetros.

http://dev.mysql.com/doc/refman/5.5/en/innodb-buffer-pool.html

MySQL Query Cache

Este es un cache general que almacena las consultas hechas a la base de datos junto con los resultados, por lo que ya no se procesa la consulta regresando inmediatamente los resultados. Cuando tenemos tablas que funcionan como catálogo o existen consultas muy frecuentes este cache nos puede resultar sumamente útil.

http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

Mysql ya utiliza estos caches desde que se instala. Pero al crecer nuestra información y la cantidad de usuarios debemos verificar su uso óptimo y afinar sus parámetros para obtener el mejor rendimiento de nuestra base de datos de acuerdo a las necesidades de nuestra información.

Puedes encontrar excelente información en el manual de Mysql o en el libro MySQL Database Design and Tuning.




Subscribe to email feed



La fábrica de softw

La Fábrica de Software de la Dirección de Innovación y ...

Administradores de A

Durante años aplicación ES File Explorer era la mejor y ...

Apoyo del Conacyt a

El Consejo Nacional de Ciencia y Tecnología (Conacyt), como parte ...

Microsoft Surface St

Esta semana Microsoft anuncio la existencia de su nueva PC ...

Incuba tu proyecto c

¡Buscamos nuevas tecnologías! Si tu proyecto es seleccionado Telcel te otorgará ...

Las 10 funciones de

  Java 8 incluye nueva funcionalidad que nos permite tener un ...

Como usar una funci

Usar una función hash para encriptar una contraseña no es ...

Cómo escribir códi

Nunca supongas a la malicia lo que puede ser explicado ...

Las 114 preguntas de

¿Tienes una entrevista de trabajo en puerta para un posición Java? ...

Believe in technolog

Ziff Davis Publishing es la más grande editorial de contenidos ...