Base de datos

¿Cómo activar caché de MySQL?
MySQL, MariaDB, SQLlite

MySql Query Cache

MySQL tiene un caché de consultas que almacena en caché los resultados de las consultas SELECT, si está habilitado. Esto significa que las consultas de bases de datos de uso frecuente se ejecutarán mucho más rápido, porque el conjunto de resultados de datos se leerá de la memoria caché en lugar de tener que ejecutar la consulta nuevamente. El caché de consultas MySQL está disponible en MySQL 4.0.1. Cada vez que se modifican las tablas en la base de datos, las entradas relevantes en el caché de consultas se vacían, por lo que puede estar seguro de que incluso con el caché de consultas habilitado solo se devuelven datos actualizados.
Puede saber si el caché de consultas está habilitado y qué parámetros están configurados, ejecutando la siguiente consulta en MySQL:

SHOW VARIABLES LIKE '%query_cache%'

A continuación se muestra un resultado de ejemplo para la consulta anterior, que muestra que el motor de caché de consultas está disponible, pero el tamaño de la caché de consultas se establece en cero y, por lo tanto, no se almacenará en caché, y el motor de caché de consultas no se utilizará realmente.

+------------------------------+---------+
| Variable_name | Value |
+------------------------------+---------+
| have_query_cache | YES |
| query_cache_limit | 998576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 0 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
+------------------------------+---------+

Es posible establecer la variable query_cache_size sin reiniciar el servidor MySQL, ejecutando la siguiente consulta SQL. En este ejemplo, estamos habilitando un caché de consultas de 50 MB.

SET GLOBAL query_cache_size = 50*1024*1024;

Si ejecutamos ahora SHOW VARIABLES LIKE ‘%query_cache%’ devolverá lo siguiente:

+------------------------------+----------+
| Variable_name | Value |
+------------------------------+----------+
| have_query_cache | YES |
| query_cache_limit | 998576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 52428800 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
+------------------------------+----------+

Esto significa que ahora se ejecutará una memoria caché de consultas con 50 MB de memoria. Sin embargo, la próxima vez que se reinicie el servidor MySQL, la configuración se perderá y la caché de consultas ya no se utilizará. A continuación, veremos cómo hacer que el cambio sea permanente.

Establecer el tamaño de caché de consultas MYSQL en my.cnf

Para que la configuración query_cache_size sea permanente, se debe modificar el archivo de configuración del servidor MySQL. Estas configuraciones se almacenan en un archivo llamado my.cnf que generalmente se almacena en un sistema Linux en /etc/my.cnf o, a veces, en /etc/mysql/my.cnf. Si no está en ninguna de esas ubicaciones, puede intentar ejecutar localizar my.cnf o buscar / -name my.cnf, aunque tenga en cuenta que el último comando llevará un tiempo.

Para activar el cache de querys con 50Mb de cache de query en MySQL, debes añadir la siguiente línea en tu archivo de configuración de mysql my.cnf, debajo de la sección de [mysqld]:

query-cache-size = 50M

La próxima vez que se reinicie MySQL tendrá habilitada la caché de consultas con el tamaño especificado.

Ejemplo de aceleración de caché de consultas MySQL

Ayer publiqué una consulta SQL que resuelve las categorías más vendidas en un sitio web de comercio electrónico. Cuando ejecuté esta consulta por primera vez en mi máquina local, fue razonablemente rápida, pero tardó casi 4 segundos en ejecutarse en el servidor de producción real, lo que es inaceptablemente lento. Me había llevado aún más tiempo, pero optimicé la consulta agregando índices apropiados, etc., y solo logré reducirlo a 4 segundos. Después de habilitar el caché de consultas, la primera vez que se ejecutó la consulta, todavía tomaría casi 4 segundos, pero las consultas posteriores para los mismos datos tomaron alrededor de 0,0001 segundos. Esto es mucho mejor y muestra el poder de la caché de consultas MySQL.

El manual de MySQL contiene más información.

Beto López
Ingeniero de Software y programador web "Full stack" que ha dejado una startup dónde los miércoles eran día de yoga, para construir un servicio de soporte técnico estandarizado low cost, más profundo que el que el servicio que ofrecen las compañias de hosting, para particulares, autónomos y empresas digitales. Web Personal, LinkedinTwitter.


¿Cómo activar caché de MySQL?
Te respondemos rapidamente
Contacta

Atención y comunicación
Estamos aquí para ayudar. El responsable de ventas también es programador. Incluso coge el teléfono y responde por whatsapp

Expertos en WordPress y Prestashop
Programadores expertos de cada tema para resolver mejor y más rápido. Project Manager + Programador + Q/A Testing

24/7/365
Porqué los problemas aparecen en los peores momentos. De Lunes a Viernes de 9h a 18h contestamos más rápido

Do NOT follow this link or you will be banned from the site!
Php Ninja