samedi 24 mars 2012

Acelerar su sitio web con almacenamiento en caché de consultas de MySQL

Una de las mejores maneras de acelerar la aplicación web es permitir el almacenamiento en caché de consulta en la base de datos, que almacena en caché utilizado consultas SQL en la memoria para un acceso casi instantáneo a la página siguiente que hace la misma petición.

La razón de este método es tan poderoso es que usted no tiene que realizar ningún cambio en su aplicación web, sólo tienes que sacrificar un poco de memoria. Esto no va a solucionar todos sus problemas, pero definitivamente no puede hacer daño.

Nota: si la aplicación actualiza las tablas de frecuencia, entonces la caché de consultas será constantemente purificado y no se hará mucho o ningún beneficio de ello. Esto es ideal para una aplicación que en su mayoría no lee la base de datos, tales como un blog de WordPress. Esto no funcionará si se está ejecutando en alojamiento compartido.

Habilitar el almacenamiento en caché con el servidor que ejecuta

La primera cosa que usted querrá hacer es asegurarse de que la instalación de MySQL en realidad tiene el apoyo de caché de consultas disponibles. La mayoría de las distribuciones de hacer, pero usted debe revisar de todos modos.

Usted querrá ejecutar este comando desde la consola de MySQL, que le dirá si el cacheo de consultas está disponible.

mysql> show variables like 'have_query_cache'; +------------------+-------+ | Variable_name    | Value | +------------------+-------+ | have_query_cache | YES   | +------------------+-------+ 

No se debe confundir esto en el sentido de que el cacheo de consultas está realmente habilitado, porque la mayoría de los proveedores de hosting no vamos a permitir esto por defecto. Por extraño que parezca, mi Ubuntu Feisty instalación ya había activado ...

A continuación hay que comprobar y ver si el cacheo de consultas está habilitada. Vamos a tener que marcar más de una variable, por lo que pueden y lo hacen todo a la vez mediante el control de la variable de consulta%

mysql> show variables like 'query%'; +------------------------------+---------+ | Variable_name                | Value   | +------------------------------+---------+ | 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    | +------------------------------+---------+ 

He aquí los puntos importantes en la lista y lo que significan:

  • query_cache_size - Este es el tamaño de la caché en bytes. Al establecer este valor a 0 efectivamente desactivar el almacenamiento en caché.
  • query_cache_type - Este valor debe estar en ON o 1 para la consulta de caché para ser activado por defecto.
  • query_cache_limit - Esta es la consulta de tamaño máximo (en bytes) que se almacenan en caché.

Si el valor query_cache_size se establece en 0 o si simplemente desea cambiarla, tendrá que ejecutar el siguiente comando, teniendo en cuenta que el valor es en bytes. Por ejemplo, si desea asignar a la caché de 8 MB que usaríamos 1024 * 1024 * 8 = 8388608 como 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;
SET GLOBAL query_cache_type = 1;

Ahora, ¿cómo saber si realmente funciona? Puede utilizar el comando SHOW STATUS para tirar de todas las variables que comienzan con "CC" a echar un vistazo a lo que está pasando debajo del capó.

mysql> SHOW STATUS LIKE 'Qc%'; +-------------------------+--------+ | Variable_name           | Value  | +-------------------------+--------+ | 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 rows in set (0.00 sec) 

Se dará cuenta en las estadísticas que he dejado un montón de memoria libre. Si su servidor muestra una gran cantidad de ciruelas pasas poca memoria, puede que tenga que considerar el aumento de este valor, pero yo no gastaría demasiada memoria en caché de consultas para un servidor web ... que necesita para salir de la memoria disponible para Apache, PHP, Ruby, o lo que sea que esté utilizando.

Habilitar en el archivo de configuración

Si desea que estos cambios para sobrevivir a un reinicio o reiniciar el servidor mysql, tendrás que añadir en el archivo / etc / mysql / my.cnf de configuración de MySQL. Tenga en cuenta que podría ser en un lugar diferente en su instalación.

Abra el archivo con un editor de texto en modo root o sudo, y luego agregar estos valores si no existen en el archivo. Si existen, simplemente quite.

query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576

El caché de consulta puede mejorar significativamente la velocidad de su aplicación web, especialmente si su aplicación se lee en su mayoría. Controlar el estado utilizando los métodos anteriores y ver cómo funciona a través del tiempo.

Aucun commentaire:

Enregistrer un commentaire