Acelere su sitio web con MySQL Query Caching
Una de las mejores maneras de acelerar su aplicación web es habilitar el almacenamiento en caché de consultas en su base de datos, que almacena en la memoria caché las consultas de SQL más utilizadas para el acceso virtualmente instantáneo en la siguiente página que realiza la misma solicitud..
La razón por la que este método es tan poderoso es que no tiene que realizar ningún cambio en su aplicación web, solo tiene que sacrificar un poco de memoria. Esto no solucionará todos sus problemas, pero definitivamente no puede hacer daño..
Nota: si su aplicación actualiza las tablas con frecuencia, la caché de consultas se eliminará constantemente y no obtendrá mucho o ningún beneficio de esto. Esto es ideal para una aplicación que generalmente lee contra la base de datos, como un blog de WordPress. Esto tampoco funcionará si está ejecutando en alojamiento compartido.
Habilitar el almacenamiento en caché con el servidor en ejecución
Lo primero que querrá hacer es asegurarse de que su instalación de MySQL tenga realmente disponible el soporte de consulta de caché. La mayoría de las distribuciones lo hacen, pero deberías revisar de todos modos..
Querrá ejecutar este comando desde su consola MySQL, que le dirá si el almacenamiento en caché de consultas está disponible..
mysql> muestra variables como 'have_query_cache'; + ------------------ + ------- + | Nombre de variable | Valor | + ------------------ + ------- + | have_query_cache | Si | +------------------+-------+
No confunda esto en el sentido de que el almacenamiento en caché de consultas está realmente habilitado, porque la mayoría de los proveedores de alojamiento no lo van a habilitar de forma predeterminada. Por extraño que parezca, mi instalación de Ubuntu Feisty ya la tenía habilitada ...
A continuación, tendremos que comprobar y ver si el almacenamiento en caché de consultas está habilitado. Tendremos que verificar más de una variable, por lo que también podemos hacerlo de una vez al verificar la variable% de consulta
mysql> muestra variables como 'consulta%'; + ------------------------------ + --------- + | Nombre de variable | Valor | + ------------------------------ + --------- + | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+
Aquí están los elementos importantes en la lista y lo que significan:
- query_cache_size - Este es el tamaño del caché en bytes. Establecer este valor en 0 efectivamente deshabilitará el almacenamiento en caché.
- query_cache_type - Este valor debe estar activado o 1 para que el almacenamiento en caché de consultas esté habilitado de forma predeterminada.
- query_cache_limit - Esta es la consulta de tamaño máximo (en bytes) que se almacenará en caché.
Si el valor de query_cache_size se establece en 0 o simplemente desea cambiarlo, deberá ejecutar el siguiente comando, teniendo en cuenta que el valor está en bytes. Por ejemplo, si desea asignar 8MB al caché, usaríamos 1024 * 1024 * 8 = 8388608 como el valor.
SET GLOBAL query_cache_size = 8388608;
Del mismo modo, las otras opciones se pueden configurar con la misma sintaxis:
SET GLOBAL query_cache_limit = 1048576;CONFIGURAR GLOBALquery_cache_type
= 1;
Ahora, ¿cómo decimos si realmente está funcionando? Puede usar el comando MOSTRAR ESTADO para extraer todas las variables que comienzan con "Qc" para ver lo que sucede debajo del capó.
mysql> SHOW STATUS LIKE 'Qc%'; + ------------------------- + -------- + | Nombre de variable | Valor | + ------------------------- + -------- + | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | + ------------------------- + -------- + 8 filas en conjunto (0,00 seg)
Notarás en las estadísticas que me queda mucha memoria libre. Si su servidor muestra muchas ciruelas bajas, es posible que deba considerar aumentar este valor, pero no gastaría mucha memoria en el almacenamiento en caché de consultas para un servidor web ... debe dejar la memoria disponible para apache, php, ruby o lo que sea que estés usando.
Habilitar en el archivo de configuración
Si desea que estos cambios sobrevivan a un reinicio o reinicio del servidor mysql, deberá agregarlos a su archivo de configuración /etc/mysql/my.cnf para MySQL. Tenga en cuenta que podría estar en una ubicación diferente en su instalación.
Abra el archivo utilizando un editor de texto en modo sudo o raíz, y luego agregue estos valores si aún no existen en el archivo. Si existen, solo descoméntelas.
query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576
El almacenamiento en caché de consultas puede mejorar significativamente la velocidad de su aplicación web, especialmente si su aplicación realmente lee. Monitoree el estado usando los métodos anteriores y vea cómo funciona a lo largo del tiempo.