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 .