Authentifizierte RESP-API · PostgreSQL 14–18 · Open Source
3.1.0 nutzt Byte-Kapazität für Millionen kleiner Schlüssel, wenn das Speicherbudget reicht. Neu sind partitionierte Sperren, allokationsfreie Einzel-Key-Treffer, günstigere Schreibverfolgung und aufgeschobene Fehltreffer bei Relationssperren. Upgrade-Leitfaden.
3.1.0 · finaler Build c431bcc
210kAnfragen/s · RESP MGET
Pro gepinntem physischen Serverkern Hot Keys · 256 Clients · Go/pgx
Valkey · io-threads=2N
91.5k Anfragen/s
Vorbereitetes SQL
23.2k Anfragen/s
Private 10-GbE-VMs · Xeon Gold 6354 · auf einen physischen Kern gepinnt. Bei einem Kern erreichte Valkey mit io-threads=1 180k Anfragen/s und benötigte pro Anfrage am wenigsten Server-CPU.Ergebnisse, Rohdaten und Bedingungen →
Ein Aufruf. Zwei Lesepfade.
Ein geeigneter Treffer gibt die gespeicherte Zeile zurück. Ein Fehltreffer oder Bypass liest die Quelltabelle. Ihre gewöhnlichen SELECT-Abfragen behalten ihren bisherigen Pfad.
RESP2 │ Lesevorgänge per Primärschlüssel
-- 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}
Authentifiziert und auf 1.024 Schlüssel pro Anfrage begrenzt. Fehlende Zeilen geben null zurück.
Gewöhnliche Schreibvorgänge
INSERT, UPDATE und DELETE invalidieren betroffene Einträge.
Feste Kapazität
Allokieren Sie den gemeinsamen Zeilen-Cache beim Start von PostgreSQL.
Prüfung von Fence-Generation und Payload
Nicht geeignete Lesevorgänge verwenden die Quelltabelle gemäß den Sichtbarkeitsregeln von PostgreSQL.
Führen Sie denselben Test aus. Mit jedem Client.
Node.js und Go. Vorbereitetes SQL und RESP MGET.
Ein Runner verwendet dieselben Schlüssel, Batch-Größen, Verbindungszahlen, Dauer und Ergebnisprüfungen. Vergleichen Sie Durchsatz, Latenz sowie CPU und Speicher von PostgreSQL auf Ihrem Rechner.
READ COMMITTED auf einem beschreibbaren primären Server.
Eine Anwendung, die authentifiziertes RESP MGET verwenden kann.
Gewöhnliches SQL beibehalten
Joins, Bereiche, Aggregate oder beliebige Abfrageergebnisse.
RLS-, partitionierte oder vererbte Tabellen.
Eine Datenbank, in der Sie keine native Erweiterung installieren können.
Arbeitslasten ohne gemessenen Nutzen.
Lokale Demo starten.
Klonen Sie das Repository und starten Sie einen verworfenen PostgreSQL-Server mit Beispielzeilen. Docker baut die Erweiterung und hält die Demo von Ihren Datenbanken getrennt.
Git und Docker Compose erforderlich
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
Ein Cache-aside-Rennen nachvollziehen, bei dem ein alter Lesevorgang nach dem Commit einen gelöschten Schlüssel erneut füllt. Veröffentlichungs-Sperren, Snapshots, Rollback und anfragebezogene Caches verstehen.
Einen fairen Vergleich des PostgreSQL-Zeilen-Caches mit vorbereitetem SQL und RESP MGET entwerfen. Warme Lesevorgänge, Fehltreffer, Batch-Größen, Schreibvorgänge und Client-Kosten getrennt messen.
Ersetzen Sie N+1-Abfragen per Primärschlüssel und bewahren Sie doppelte IDs, Eingabereihenfolge, NULL-Positionen und fehlende Zeilen. Vergleichen Sie ANY, WITH ORDINALITY und RESP MGET.
pg_local_cache 3.1.0 hält heiße Zeilen im PostgreSQL Shared Memory und liefert sie per RESP. Vergleich mit Valkey und Prepared SQL ohne veraltete Zeilen.
Nein. PostgreSQL cached Datenbankseiten. Diese Erweiterung cached separat serialisierte vollständige Zeilen per Primärschlüssel. Siehe den Vergleich der Lesepfade.
Cached es gewöhnliche SELECT-Abfragen?
Nein. Nur authentifiziertes RESP MGET verwendet den gemeinsamen Zeilen-Cache. Bestehende Abfragen behalten den normalen PostgreSQL-Ausführungspfad.
Ersetzt es Redis?
Nein. Der RESP2-Endpunkt ist begrenzt. Es gibt weder einen allgemeinen Redis-Befehlssatz noch TTL, Pub/Sub oder verteilte Koordination. Vergleichen Sie die PostgreSQL- und Redis-Cache-aside-Pfade.