Guía para decidir el almacenamiento en caché de PostgreSQL
Esta guía compara la caché de páginas de PostgreSQL, SQL preparado, caché de filas completas, vistas materializadas y Redis según el trabajo que evita cada opción.
Empiece por el trabajo que repite
| Necesidad | Opción | Trabajo que evita |
|---|---|---|
| Mantener en memoria las páginas de tablas e índices | shared_buffers de PostgreSQL y caché del sistema operativo |
Lecturas de almacenamiento; SQL sigue ejecutándose |
| Repetir una sentencia en una sesión | Sentencia preparada | Parseo y análisis repetidos |
| Leer filas completas por clave primaria | MGET autenticado de RESP con pg_local_cache |
Lecturas aptas de filas completas desde el origen |
| Reutilizar joins o agregados | Vista materializada | Recalcular el resultado almacenado hasta que se actualice |
| Compartir objetos entre servicios | Redis cache-aside | Lecturas de origen gestionadas por la aplicación |
Páginas y SQL preparado
shared_buffers almacena en caché páginas de la base de datos, no resultados finales de SELECT. PostgreSQL sigue comprobando la visibilidad, ejecutando la consulta y construyendo cada resultado. Una sentencia preparada reduce el parseo repetido, pero sigue ejecutándose sobre el estado actual de la base de datos.
Consulte caché de filas frente a shared_buffers para ver el trabajo que queda en cada ruta.
Filas completas por clave primaria
pg_local_cache almacena filas completas en la memoria compartida acotada de PostgreSQL. Un MGET RESP autenticado puede devolver una fila apta en caché; el SQL ordinario nunca consulta esta caché. Los fallos de caché y las lecturas no aptas usan la tabla de origen. El endpoint usa un único rol de base de datos configurado y no comparte la transacción SQL ni la instantánea del cliente. Consulte la guía de lotes, la referencia técnica y la guía de invalidación.
Vistas y cachés externos
Una vista materializada de PostgreSQL almacena el resultado de una consulta y se actualiza cuando se solicita. Es adecuada para informes y agregados cuya frescura queda definida por el momento de actualización.
Redis es adecuado para objetos de aplicación compartidos entre procesos. La aplicación gestiona las claves, la serialización, los TTL y la invalidación. Consulte PostgreSQL y Redis cache-aside. Use la guía de inicio rápido para probar la caché de filas.
Actualizado .