Recherches de lignes par lots avec Go et pgx
Commencez par la base éphémère, puis exécutez :
go -C examples/go-pgx run ./demo
Elle utilise 127.0.0.1:55432, la base pglc_demo et les identifiants
demo / demo-only. Définissez PGLC_DEMO_PORT si le démarrage rapide
utilise un autre port.
La démo envoie les clés comme paramètre de requête :
SELECT local_cache.mget('public.items'::regclass, $1::bigint[]);
mget renvoie text[] ; chaque élément non nul est une ligne JSON. L’exemple
demande 42, 7, 42, NULL, 999999 et affiche les lignes dans l’ordre d’entrée.
Le doublon 42 reste aux deux positions ; l’entrée nulle et 999999 absent
produisent des éléments nuls.
Comparer les lignes, pas seulement les allers-retours
Une requête ordinaire WHERE id = ANY($1::bigint[]) ne conserve pas les
positions demandées. Restaurez l’ordre d’entrée, les doublons et les lignes
absentes avant de la comparer à mget ; le guide des recherches par lots
montre les approches côté client et SQL.
Le benchmark utilise des connexions persistantes et des instructions préparées. Préparer le SQL ne met pas ses lignes de résultat en cache : consultez le guide de mise en cache PostgreSQL. Le benchmark commun teste Go et Node.js avec les mêmes clés, tailles de lots, nombres de connexions et durée via SQL et RESP. RESP ne partage pas la transaction SQL de l’appelant.
Consultez le démarrage rapide pour la configuration et les vérifications transactionnelles avant d’adapter le chemin de lecture.
Mis à jour .