Muchas veces estamos buscando una forma de acelerar las consultas a nuestra tienda en línea a través de optimizaciones en la plataforma que estemos empleando, Prestashop, Magento, etc., sin embargo, también suele lograrse excelente resultados optimizando las consultas en nuestro hosting a la base de datos MySQL.
En MySQL podemos habilitar la caché de consultas para aumentar el rendimiento del servidor de base datos. Cada vez que la caché de consultas está activada, esta puede cachear o mantener la consulta en la memoria incrementando de esta forma el rendimiento.
Para acelerar una consulta se debe habilitar la caché 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).
query-cache-type = 1
2º Debe establecer el tamaño de query_cache_size al que usted desee. Por lo general con 20MB es un valor normal.
query-cache-size = 20M
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:
SHOW VARIABLES LIKE ‘%query_cache%’;
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 realice con el siguiente comando:
SHOW STATUS LIKE ‘%qcache%’;
+———+—-+
| 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.