API RESP autenticada · PostgreSQL 14–18 · Código abierto
La versión 3.1.0 usa capacidad en bytes para millones de claves pequeñas si el presupuesto lo permite. Añade bloqueos particionados, aciertos de una clave sin asignaciones, seguimiento de escrituras más barato y fallos aplazados por bloqueos de relación. Guía de actualización.
3.1.0 · compilación final c431bcc
210ksolicitudes/s · RESP MGET
Por núcleo físico del servidor fijado claves calientes · 256 clientes · Go/pgx
Valkey · io-threads=2N
91.5k solicitudes/s
SQL preparado
23.2k solicitudes/s
VM en red privada de 10 GbE · Xeon Gold 6354 · fijado a un núcleo físico. Con un núcleo, Valkey io-threads=1 alcanzó 180k solicitudes/s y usó menos CPU de servidor por solicitud.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.
RESP2 │ lecturas por clave primaria
-- Attach your table once.SELECT local_cache.attach_table('public.items');
-- Read rows by primary key.
MGET CRUD:pglc_demo.public.items:{"id":42} CRUD:pglc_demo.public.items:{"id":7}
Autenticado y limitado a 1.024 claves por solicitud. Las filas ausentes devuelven null.
Escrituras habituales
INSERT, UPDATE y DELETE invalidan las entradas afectadas.
Capacidad fija
Asigna la caché de filas compartida al iniciar PostgreSQL.
Validación de generación del fence y de la carga útil
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 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.
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 usar RESP MGET autenticado.
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 -f examples/compose.resp.yaml up --build --wait
Recorre una carrera de caché aparte en la que una lectura antigua vuelve a llenar una clave eliminada después del commit. Entiende las vallas de publicación, los snapshots, el rollback y las cachés locales de las solicitudes.
Diseña una comparación justa de caché de filas de PostgreSQL con SQL preparado y RESP MGET. Separa lecturas calientes, fallos, tamaños de lote, escrituras y costes del cliente.
Sustituye consultas de claves primarias N+1 conservando los ID duplicados, el orden de entrada, las posiciones NULL y las filas ausentes. Compara ANY, WITH ORDINALITY y RESP MGET.
pg_local_cache 3.1.0 guarda filas frecuentes en memoria compartida de PostgreSQL y las sirve por RESP. Comparación con Valkey y SQL preparado, sin filas obsoletas.
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 RESP MGET autenticado usa la caché de filas compartida. Las consultas existentes mantienen el recorrido normal de PostgreSQL.