Una caché de filas
dentro de PostgreSQL.

Lee filas por clave primaria con mget SQL o RESP. Las escrituras de PostgreSQL invalidan automáticamente las entradas de caché afectadas.

API SQL explícita · PostgreSQL 14–18 · Código abierto

Medido localmente · 15 sep 2026

839,678solicitudes/s · RESP MGET

3.31× el rendimiento de SQL preparado
en esta comparación de una sola clave

SQL preparado
253,790 solicitudes/s
SQL mget
186,296 solicitudes/s
Apple M3 Max · PostgreSQL 16 · Go · 256 conexiones.
Caché caliente, 1 clave/solicitud. Mediana de 3 × 5 segundos.
SQL mget fue más lento aquí; los resultados por lotes difieren.
Resultados, datos brutos y condiciones

Una llamada. Dos recorridos de lectura.

Un acierto elegible devuelve la fila almacenada. Un fallo o una omisión lee la tabla de origen. Tus consultas SELECT habituales conservan su recorrido existente.

psql │ lecturas por clave primaria
-- Attach your table once.
SELECT local_cache.attach_table('public.items');

-- Read rows by primary key.
SELECT local_cache.mget(
  'public.items', ARRAY[42, 7]::bigint[]
);
Recorrido de lectura de SQL mget La aplicación llama a local_cache.mget dentro de PostgreSQL. Tras las comprobaciones de elegibilidad y de snapshot, un acierto de caché devuelve la carga útil almacenada de la fila completa. Un fallo o una omisión lee la tabla de origen. Ambos recorridos devuelven filas mediante la misma conexión de PostgreSQL. PostgreSQL Aplicación local_cache.mget Elegibilidad + snapshot Acierto Fallo / omisión Almacenadafila Origentabla
Ambos recorridos devuelven filas completas serializadas por la misma conexión de PostgreSQL. Una lectura elegible de la tabla de origen puede llenar la caché.
Qué evita un acierto de la caché de filas
SQL mget

Hasta 1.024 claves por llamada. Se conservan el orden, los duplicados y las posiciones NULL.

Escrituras habituales

INSERT, UPDATE y DELETE invalidan las entradas afectadas.

Capacidad fija

Asigna la caché de filas compartida al iniciar PostgreSQL.

Comprobaciones de snapshot

Las lecturas no elegibles usan la tabla de origen conforme a las reglas de visibilidad de PostgreSQL.

Ejecuta la misma prueba.
En cada cliente.

Node.js y Go. SQL preparado, SQL mget y RESP MGET.

Un mismo ejecutor usa las mismas claves, tamaños de lote, cantidades de conexiones, duración y comprobaciones de resultados. Compara rendimiento, latencia y CPU y memoria de PostgreSQL en tu máquina.

Ejecutar la comparación

¿Es esta tu carga de trabajo?

¿Estás eligiendo una caché? Compara páginas de PostgreSQL, filas, vistas materializadas y Redis.

Vale la pena medir

  • Consultas repetidas de filas completas por clave primaria.
  • Un conjunto pequeño y activo de filas completas.
  • READ COMMITTED en una primaria escribible.
  • Una aplicación que pueda llamar a la API SQL explícita.

Conserva el SQL habitual

  • Uniones, rangos, agregados o resultados de consultas arbitrarias.
  • Tablas con RLS, particionadas o heredadas.
  • Una base de datos donde no puedas instalar una extensión nativa.
  • Cargas de trabajo sin un beneficio medido.

Ejecuta una demo local.

Clona el repositorio e inicia un servidor PostgreSQL desechable con filas de ejemplo. Docker compila la extensión y mantiene la demo separada de tus bases de datos.

Se requieren Git y Docker Compose
git clone https://github.com/profundium/pg_local_cache.git
cd pg_local_cache
docker compose -f examples/compose.yaml up --build --wait

Lee filas de ejemplo y comprueba los aciertos de caché. ¿Ya has clonado el repositorio? Ejecuta el último comando desde su raíz. Para un servidor existente, usa la guía de instalación.

La instalación en un servidor existente requiere reiniciar PostgreSQL.

Documentación

Prueba pg_local_cache localmenteEjecuta pg_local_cache 2.0 en PostgreSQL desechable, lee filas de ejemplo, inspecciona los aciertos de caché, prueba actualizaciones y elimina la demo sin cambiar una base de datos existente. Benchmarks de la caché de PostgreSQLResultados medidos de pg_local_cache con Node.js, Go y RESP en Apple M3 Max. Incluye la máquina, la CPU de PostgreSQL, la memoria y la metodología. Guía para decidir la caché de PostgreSQLElige entre caché de páginas de PostgreSQL, SQL preparado, caché de filas completas, vistas materializadas o una caché externa según el trabajo que necesites evitar. Caché aparte de PostgreSQL y RedisUsa PostgreSQL como fuente de verdad con un recorrido de caché aparte de Redis, entiende las carreras de lecturas obsoletas y descubre dónde encaja pg_local_cache. Consultas por lotes de claves primarias de PostgreSQLSustituye lecturas de claves primarias N+1 por una consulta parametrizada de PostgreSQL, conserva las posiciones de entrada cuando sea necesario y compara el recorrido explícito pg_local_cache mget. Caché de filas de PostgreSQL frente a shared_buffersCompara la caché de páginas de PostgreSQL con la caché de filas completas de pg_local_cache 2.0. Descubre qué evita un acierto de la caché de filas, qué costes conserva y cuándo no añadir otra caché. Invalidación de caché consciente de las transacciones en PostgreSQLPrueba la invalidación de pg_local_cache 2.0 con sesiones concurrentes de PostgreSQL. Comprueba actualizaciones no confirmadas, lectura de los propios cambios, rollback, lecturas confirmadas y reglas de omisión. Consultas por lotes de filas con node-postgresUsa pg_local_cache 2.0 desde Node.js con un array bigint parametrizado y transporte JSON. Conserva el orden y los valores nulos, y compáralo con una consulta ANY preparada. Consultas por lotes de filas con Go y pgxUsa pg_local_cache desde Go con pgx, claves parametrizadas y filas JSON descodificadas. Conéctate mediante RESPLee filas de PostgreSQL mediante RESP2 con redis-cli o Node.js. Incluye autenticación, configuración del cliente, ejemplos ejecutables y limpieza. Instala pg_local_cache en PostgreSQL 14-18Instala la extensión pg_local_cache con binarios de Linux verificados o PGXS y configura la precarga, el reinicio, la verificación y la recuperación de forma segura. Referencia técnica de pg_local_cacheReferencia técnica de SQL mget de pg_local_cache, invalidación consciente de las transacciones, memoria compartida acotada de PostgreSQL, monitorización y RESP2 opcional.

Notas prácticas sobre la caché de PostgreSQL

Todos los artículos →

Antes de probarlo

¿Esto reemplaza shared_buffers?

No. PostgreSQL almacena en caché las páginas de la base de datos. Esta extensión almacena por separado filas completas serializadas por clave primaria. Consulta la comparación de recorridos de lectura.

¿Almacena en caché las consultas SELECT habituales?

No. Solo las llamadas explícitas a local_cache.mget usan la caché SQL. Tus consultas existentes conservan el recorrido de ejecución normal de PostgreSQL.

¿Reemplaza a Redis?

No. El endpoint RESP2 opcional es limitado. No ofrece un conjunto general de comandos de Redis, TTL, pub/sub ni coordinación distribuida. Compara los recorridos de caché aparte de PostgreSQL y Redis.

¿Cómo compruebo las actualizaciones y el rollback?

La guía de invalidación incluye una prueba con dos sesiones. El ejemplo ejecutable comprueba escrituras no confirmadas, lectura de los propios cambios, rollback y actualizaciones confirmadas.