DICCIONARIO · Q

Query cache

La query cache (caché de consultas) es una memoria que guarda el resultado de una consulta a base de datos para devolverlo al instante si llega otra idéntica, sin volver a ejecutarla. MySQL la retiró en la versión 8.0 por problemas de escalabilidad, y hoy ese cacheo se hace en la aplicación o con Redis.

Germán Gutiérrez Escrito por Germán Gutiérrez 6 min de lectura
Ficha rápida
Qué es
Caché que almacena resultados de consultas para reutilizarlos
MySQL
Desactivada por defecto desde MySQL 5.6 y eliminada en MySQL 8.0
Anuncio de retirada
Blog oficial de MySQL, 30 de mayo de 2017
MariaDB
La mantiene, pero desactivada por defecto (query_cache_type = OFF)
Alternativas actuales
Caché de aplicación (Redis, Memcached), proxies como ProxySQL, caché de objetos

≡En resumen

  • Una query cache guarda el resultado de una consulta y lo sirve de nuevo si llega exactamente la misma, sin ejecutarla.
  • La caché de consultas nativa de MySQL se eliminó en MySQL 8.0 porque no escalaba en servidores con muchos núcleos y mucha escritura.
  • Invalidar la caché es el problema central: cualquier cambio en una tabla vacía los resultados guardados de esa tabla.
  • Hoy lo habitual es cachear en la aplicación, con claves y tiempos de expiración propios, en Redis o Memcached.
  • Antes de cachear, revisa índices y consultas lentas: una caché puede esconder un problema de rendimiento en lugar de resolverlo.

01 ¿Qué es la query cache o caché de consultas?

Es un tipo concreto de caché: no guarda páginas ni archivos, sino resultados de consultas. El término se asocia sobre todo a la función nativa de MySQL, pero hoy se usa también para cualquier capa que cachee resultados de consultas, esté en el servidor de base de datos, en un proxy o en el código de la aplicación.

02 Cómo funciona una caché de consultas

  1. 1

    Llega una consulta

    El sistema calcula una clave a partir del texto de la consulta (y, en una caché de aplicación, de sus parámetros).

  2. 2

    Busca la clave en la caché

    Si existe (acierto o hit), devuelve el resultado guardado sin tocar las tablas.

  3. 3

    Si no existe, ejecuta

    En un fallo (miss) la consulta se ejecuta normalmente y su resultado se guarda para la próxima vez.

  4. 4

    Invalida cuando cambian los datos

    Cuando se modifican las tablas implicadas, o vence el tiempo de vida (TTL), la entrada se borra para no servir datos obsoletos.

03 Por qué MySQL 8.0 eliminó la query cache

Fecha Hito
MySQL 5.6 (2013) Pasa a estar desactivada por defecto por no escalar con cargas de alto rendimiento en máquinas multinúcleo
30 de mayo de 2017 El equipo de MySQL anuncia en su blog que retira el soporte en MySQL 8.0
MySQL 8.0.11 (19 de abril de 2018) Primera versión de disponibilidad general de la serie 8.0, ya sin query cache
Cronología de la query cache en MySQL

El manual de MySQL 8.0 lo dice sin rodeos: la caché de consultas se eliminó, junto con las sentencias FLUSH QUERY CACHE y RESET QUERY CACHE y las variables query_cache_size, query_cache_type y compañía. El modificador SQL_NO_CACHE se sigue aceptando pero no tiene efecto.

El motivo técnico es que la caché dependía de un bloqueo propio (de ahí el estado de hilo «Waiting for query cache lock», eliminado también en 8.0): con muchas conexiones y escrituras frecuentes se convertía en un cuello de botella. Además, solo mejoraba las consultas que acertaban, así que no hacía más predecible el rendimiento.

04 Alternativas actuales a la query cache

01

Caché en la aplicación

El código decide qué cachear, con qué clave y durante cuánto tiempo. Es la opción más flexible y la más usada hoy.

02

Redis o Memcached

Almacenes en memoria compartidos entre servidores. Redis se define como base de datos, caché, motor de streaming y broker de mensajes.

03

Proxy con caché

Herramientas como ProxySQL se sitúan entre la aplicación y MySQL y cachean resultados con un TTL configurable.

04

Caché del motor

El buffer pool de InnoDB guarda en memoria datos e índices de las tablas. No cachea resultados, pero evita lecturas de disco.

05

Caché de objetos de WordPress

WP_Object_Cache guarda resultados costosos; por defecto solo dura una petición, salvo que instales un plugin de caché persistente.

06

Vistas materializadas o tablas resumen

Precalculan agregados pesados (ventas por día, por ejemplo) y se refrescan de forma programada.

Ejemplo · Cachear una consulta en Laravel

La documentación de Laravel propone el método Cache::remember: si la clave users existe en caché, devuelve su valor; si no, ejecuta la consulta, guarda el resultado durante los segundos indicados y lo devuelve. Con Redis como driver, esa caché la comparten todos los servidores de la aplicación.

$value = Cache::remember('users', $seconds, fn () => DB::table('users')->get());

05 Cuándo conviene cachear consultas (y cuándo no)

Escenario ¿Cachear? Por qué
Menús, categorías, ajustes del sitio Sí Se leen en cada página y cambian muy poco
Informes o agregados costosos Sí, con TTL Recalcular cada pocos minutos basta
Stock y precios en el checkout Con mucho cuidado Un dato obsoleto genera errores de venta
Datos personales del usuario Solo con clave por usuario Evita mostrar datos de un cliente a otro
Tablas con escrituras constantes No La caché se invalida antes de aprovecharse
Escenarios típicos
  • ✓Mide primero: activa el registro de consultas lentas y revisa los planes de ejecución.
  • ✓Añade índices antes de añadir caché; el propio equipo de MySQL advertía que la caché podía enmascarar índices ausentes.
  • ✓Define una estrategia de invalidación clara (por evento, por TTL o ambas).
  • ✓Vigila la tasa de aciertos: una caché con pocos hits solo consume memoria.

06 Cómo saber si tus consultas necesitan caché

  1. 1

    Activa el registro de consultas lentas

    En MySQL, la variable slow_query_log y el umbral long_query_time guardan las consultas que tardan más de lo aceptable.

  2. 2

    Analiza el plan con EXPLAIN

    EXPLAIN muestra si la consulta usa índices o recorre la tabla entera. Muchas consultas lentas se arreglan con un índice, sin caché.

  3. 3

    Cuenta cuántas veces se repiten

    Una consulta rápida ejecutada cientos de veces por página pesa más que una lenta que se ejecuta una vez al día.

  4. 4

    Mide en WordPress con un monitor de consultas

    Plugins de depuración como Query Monitor listan las consultas de cada página, su tiempo y el plugin que las lanza.

  5. 5

    Cachea y vuelve a medir

    Compara el tiempo de respuesta del servidor antes y después, y revisa la tasa de aciertos de la caché.

07 Query cache y velocidad de tu web

En webs dinámicas, buena parte del tiempo de respuesta del servidor se va en consultas a la base de datos. Cachear las consultas repetidas reduce ese tiempo y la carga del servidor, y combina bien con otras capas: caché de página completa, caché del navegador y CDN. Cada capa evita trabajo a la siguiente.

En WordPress, un plugin de caché de objetos con Redis suele notarse en tiendas WooCommerce y áreas privadas, donde la caché de página no sirve. Si tu web va lenta, en la guía sobre cómo optimizar un WordPress lento tienes el orden de prioridades.

Preguntas frecuentes sobre Query cache

Es una caché que guarda el resultado de una consulta a base de datos y lo devuelve directamente cuando se repite la misma consulta, sin ejecutarla otra vez.

No. La caché de consultas se eliminó en MySQL 8.0, incluidas sus variables y las sentencias FLUSH QUERY CACHE y RESET QUERY CACHE. Ya estaba desactivada por defecto desde MySQL 5.6.

Porque no escalaba con cargas altas en servidores multinúcleo: se convertía en un cuello de botella y solo mejoraba las consultas que acertaban en caché.

Caché en la aplicación con Redis o Memcached, un proxy como ProxySQL con TTL, y sobre todo índices bien diseñados. En WordPress, un plugin de caché de objetos persistente.

Sí. MariaDB la conserva, pero está desactivada por defecto y su documentación advierte de que no escala bien con mucho tráfico en máquinas multinúcleo.

La query cache guarda resultados de consultas a la base de datos; la caché de página guarda el HTML final. La de página es más rápida, pero no sirve para contenido personalizado.

Fuentes consultadas

Germán Gutiérrez

Sobre el autor

Germán Gutiérrez

Development Manager en appyweb

Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.

Ver perfil en LinkedIn ↗

Términos relacionados

Ver todos los términos →
C Caché La caché es una memoria o almacenamiento intermedio que guarda copias temporales de datos usados recientemente para servirlos más rápido la próxima vez que se piden, sin volver a calcularlos ni descargarlos. Existe en procesadores, discos, navegadores, servidores y CDN, y es una de las claves de la velocidad de cualquier web o app. M MySQL MySQL es un sistema de gestión de bases de datos relacionales (SGBD) de código abierto que guarda la información en tablas relacionadas y se consulta con el lenguaje SQL. Creado en 1995 y propiedad de Oracle desde 2010, es la base de datos de WordPress y de millones de webs, tiendas online y aplicaciones. D Database Una database (base de datos, en español) es un conjunto organizado de datos almacenado de forma electrónica y gestionado por un software llamado SGBD, que permite guardarlos, consultarlos y actualizarlos con rapidez. Está detrás de casi cualquier aplicación: una tienda online, un CRM o una app bancaria dependen de una base de datos para funcionar. B Browser cache La browser cache (caché del navegador) es el almacenamiento local en el que el navegador guarda copias de los recursos de una web, como hojas de estilo, scripts, imágenes o fuentes, para reutilizarlas en visitas posteriores sin volver a descargarlas. Se controla desde el servidor con cabeceras HTTP como Cache-Control y ETag, y bien configurada acelera mucho las visitas repetidas. H Hosting WordPress Un hosting WordPress es un alojamiento web preparado para ejecutar WordPress: cumple sus requisitos oficiales de PHP, MySQL o MariaDB y HTTPS, y suele añadir caché, copias y actualizaciones pensadas para este CMS. Puede ser compartido, que tú administras, o gestionado, en el que el proveedor se ocupa del mantenimiento técnico. O Optimización de velocidad La optimización de velocidad es el conjunto de técnicas que reducen lo que tarda una web en mostrar su contenido, en responder a las acciones del usuario y en quedarse estable mientras carga. Se mide con las Core Web Vitals de Google (LCP, INP y CLS) y mejora a la vez la experiencia de uso, la conversión y el SEO.

Cuéntanos tu proyecto. Te respondemos en 48 h.

Auditoría gratuita de IA, campañas, web y SEO, con prioridades y cifras reales de tu negocio.

✓ Sin compromiso ✓ Respuesta en 48 h laborables ✓ Un consultor senior, no un bot
WA WhatsApp