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 .