Tecnología

Inicio

Desventajas de un caché de consultas

Desventajas de un caché de consultas


MySQL tiene una función muy útil llamada "caché de consultas" que mejora el rendimiento de MySQL significativamente cuando está activado. La caché de consultas contiene el texto de una instrucción SELECT, junto con el resultado según el cual se envía al cliente. Cuando los estados idénticos se reciben en el futuro, el servidor busca los resultados de la caché de consultas en lugar de ejecutar las instrucciones de nuevo. La caché de consultas también se comparte entre las sesiones, por tanto, un resultado de la consulta generada por un usuario puede ser utilizado por otro usuario. La caché de consultas es aplicable en contextos en los que sus cuadros no cambian a menudo y el servidor recibe numerosas consultas idénticas con respecto a las tablas. Sin embargo, la caché de consultas tiene varias limitaciones.

El almacenamiento en caché transparente

caché de consultas es completamente transparente para la aplicación. Esto causará problemas en algunas circunstancias. Cuando se habilita la caché de consultas, siempre se puede obtener resultados de la consulta, incluso cuando las tablas relacionadas están bloqueados y se están actualizando. Bloqueo de tablas por lo general significa que las mesas están inaccesibles, pero los resultados de consultas de caché de consultas seguirán viniendo a los usuarios.

Limitación de almacenamiento en caché

La caché de consultas no funciona para los sub-selecciona, vistas en línea, o la unión. Las consultas deben ser exactamente el mismo con el fin de utilizar el resultado de la caché de consultas, lo que significa que si se pone comentarios dinámicos en la consulta con más espacios o diferente caso, se obtiene un resultado diferente del caché de consultas. Otra limitación es únicamente se almacenan en caché las consultas SELECT. Evite comentarios o espacios en el inicio de la consulta como caché de consultas sólo comprueba la primera letra de la consulta y sólo si es "S" permanece también proceder resultados de la consulta de almacenamiento en caché.

Tabla detalle de nivel de invalidación

Si las tablas se alteran o se actualizan, todas las consultas derivadas de las tablas se invalidan al instante. La mayor parte de las consultas no se cambian, pero MySQL no puede identificar los modificados, por lo tanto, elimina todos ellos. Esta es la razón principal que limita la eficiencia de caché de consultas. Especialmente con la aplicación de alta de escritura, tales como foros, eficiencia caché de consultas es muy bajo debido a esta limitación.

La fragmentación a Través del Tiempo

Con el tiempo, el cache de consultas se fragmenta y menos eficientes. El comando "flush caché de consultas" se puede utilizar para la desfragmentación caché de consultas, pero puede bloquear el caché de consultas por el bien de un gran caché de consultas, que es inadecuada para aplicaciones en línea.