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 .