Acelerar el rendimiento de MySQL con la cache
Muchas veces estamos buscando una forma de acelerar las consultas a nuestra base de datos MySQL, pero en MySQL nosotros podemos habilitar la cache de consultas para aumentar el rendimiento del servidor de base datos MySQL. Cada vez que la cache de consultas está activada, esta puede cachear o mantener la consulta en la memoria incrementando de esta forma el rendimiento.
Como sabemos, la velocidad es siempre el elemento más importante en el desarrollo de un sitio web especialmente para aquellos de alto tráfico de datos impulsados por páginas web. Usted puede probar a su vez con la activación de caché de consultas para acelerar la consulta.
Para acelerar una consulta se debe habilitar la cache de consulta MySQL, pero antes es necesario modificar algunas variables en el archivo de configuración del servidor MySQL (usualmente es my.cnf o my.ini):
1º Debe establecer query_cache_type a 1 (hay tres posibles opciones: 0 (deshabilitado / off), 1 (habilitado / on) y 2 (bajo solicitud).
|
2º Debe establecer el tamaño de query_cache_size al que usted desee. Por lo general con 20MB es un valor normal.
|
Si usted establece una cache de consulta «query-cache-type» = 2 (bajo demanda), usted tendrá que modificar sus consultas SQL (.sql), para que soporten la consultas de cache.
SELECT SQL_CACHE field1, field2 FROM table1 WHERE field3 = ‘yes’
Para verificar si su servidor MySQL tiene habilitada la consulta cache, es suficiente ejecutar la siguiente consulta:
|
Usted debería ver un resultado de este estilo:
+——-+—+
| Variable_name | Value |
+——-+—+
| have_query_cache | YES |
| query_cache_limit | 1048576 |
| query_cache_size | 20971520 |
| query_cache_type | ON |
+——-+—+
4 rows in set (0.02 sec)
Para verificar si consulta de cache MySQL está funcionando simplemente realice una consulta SQL dos veces y verifique la cache de MySQL, se realiza con el siguiente comando debajo:
|
+———+—-+
| Variable_name | Value |
+———+—-+
| Qcache_queries_in_cache | 1 |
| Qcache_inserts | 3 |
| Qcache_hits | 0 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 2 |
| Qcache_free_memory | 20947592 |
| Qcache_free_blocks | 1 |
| Qcache_total_blocks | 4 |
+———+—-+
La primera vez que se ejecuta una consulta a MySQL es normal que lleve un poco más de tiempo, pero la segunda vez será más rápida en comparación con el primer tiempo de consulta, y eso implica que la cache de consulta mysql está funcionando correctamente.
Comments (4)
Novato dice
Una duda…
Si alguien pregunata cuantas canicas hay en esta caja la consulta se guarda = 100 canicas
depues una persona vende vdeterminado nimero de canicas = 5 canicas
alguien pregunta de nuevo cuantas canicas hay en esta caja como es la misma pregunta que es lo que sucede ??
muestra 100 canicas ò 95 canicas ??
digo por lo del cache…
@jesus : mostrará 95 porque la consulta cacheada se eliminará al cambiar la tabla
Para hemos tuneado el mysql activando la cache y con el parametro quey_cache_size en 100MB. Hemos reducido en 1 segundo el tiempo de conexión .
Javier.
Saludos, tengo un problema, estoy manejando una BD que (aunque parezca mentira) tiene tablas hasta de 3.500.000 registros, de los cuales debo trabajar unos reportes que realizan consultas repetitivas sobre estas tablas, pero con indices diferentes, se esta tardando demasiado, para ser mas especifico tengo una tabla con 1000 registros, una de 3.500.000 y una de 22.000, (empleados, detalle nomina, historial de sueldos) que tanto podría aumentar la cache para optimizar las respuestas? hay un tope? es recomendable aumentarla? muchas gracias!