Batch-Zeilenabfragen mit Go und pgx

Starten Sie zuerst die verworfene Datenbank, dann führen Sie Folgendes aus:

go -C examples/go-pgx run ./demo

Sie verwendet 127.0.0.1:55432, die Datenbank pglc_demo und die Zugangsdaten demo / demo-only. Setzen Sie PGLC_DEMO_PORT, wenn der Quickstart einen anderen Port verwendet.

Die Demo sendet Schlüssel als Query-Parameter:

SELECT local_cache.mget('public.items'::regclass, $1::bigint[]);

mget gibt text[] zurück; jedes Element ungleich null ist eine JSON-Zeile. Das Beispiel fordert 42, 7, 42, NULL, 999999 an und gibt die Zeilen in der Eingabereihenfolge aus. Das doppelte 42 bleibt an beiden Positionen; die Null-Eingabe und das fehlende 999999 erzeugen Null-Elemente.

Zeilen vergleichen, nicht nur Roundtrips

Eine gewöhnliche Abfrage mit WHERE id = ANY($1::bigint[]) erhält die angeforderten Positionen nicht. Stellen Sie Reihenfolge, Duplikate und fehlende Zeilen wieder her, bevor Sie mit mget vergleichen; der Leitfaden zu Batch-Abfragen zeigt sowohl clientseitige als auch SQL-Ansätze.

Der Benchmark verwendet persistente Verbindungen und vorbereitete Statements. Die Vorbereitung von SQL cached keine Ergebniszeilen: siehe den PostgreSQL-Caching-Leitfaden. Der gemeinsame Benchmark testet Go und Node.js mit denselben Schlüsseln, Batch-Größen, Verbindungszahlen und derselben Dauer über SQL und RESP. RESP teilt die SQL-Transaktion des Aufrufers nicht.

Siehe den Quickstart für die Einrichtung und die Transaktionsprüfungen, bevor Sie den Lesepfad anpassen.

Aktualisiert .