0Pricing
Go Academy · Leçon

pgx : pilote PostgreSQL hautes performances

pgxpool, protocole Copy et requêtes par lots

pgx : pilote PostgreSQL hautes performances est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

Qu’est-ce que pgx ?

github.com/jackc/pgx/v5 est un pilote Go propre à PostgreSQL, doté d’une API native prenant en charge des fonctionnalités PostgreSQL avancées indisponibles dans database/sql : protocole COPY, notifications, mise en cache des requêtes préparées, et bien plus.

Se connecter avec pgx

Utilisez le pool natif de pgx ou sa couche de compatibilité avec database/sql :

// Native pgx pool
pool, err := pgxpool.New(ctx, "postgres://user:pass@localhost/mydb")
if err != nil { log.Fatal(err) }
defer pool.Close()

pgxpool

pgxpool.New crée un pool de connexions géré. Configurez-le avec une configuration analysée :

config, _ := pgxpool.ParseConfig("postgres://...")
config.MaxConns = 10
pool, _ := pgxpool.NewWithConfig(ctx, config)

Interroger avec pgx

pgx utilise les fonctions d’assistance pool.Query et pgx.CollectRows :

rows, _ := pool.Query(ctx, "SELECT id, name FROM users WHERE active=$1", true)
users, err := pgx.CollectRows(rows, pgx.RowToStructByName[User])

RowToStructByName

pgx.RowToStructByName associe les noms de colonnes aux champs d’une structure à l’aide des noms de champs en minuscules ou des balises db, comme sqlx Select.

Analyser une seule ligne

Utilisez pool.QueryRow pour les requêtes renvoyant une seule ligne :

var name string
err := pool.QueryRow(ctx, "SELECT name FROM users WHERE id=$1", id).Scan(&name)

Requêtes par lots

pgx permet d’envoyer plusieurs requêtes en un seul aller-retour réseau avec pool.SendBatch :

batch := &pgx.Batch{}
batch.Queue("SELECT name FROM users WHERE id=$1", 1)
batch.Queue("SELECT name FROM users WHERE id=$1", 2)
results := pool.SendBatch(ctx, batch)
defer results.Close()

Protocole COPY

Pour les insertions en masse, pgx prend en charge le protocole COPY binaire de PostgreSQL, bien plus rapide que des instructions INSERT individuelles :

conn, _ := pool.Acquire(ctx)
defer conn.Release()
conn.Conn().CopyFrom(ctx, pgx.Identifier{"users"}, []string{"name","email"}, pgx.CopyFromRows(rows))

Listen et Notify

pgx prend en charge LISTEN/NOTIFY de PostgreSQL pour la publication et l’abonnement en temps réel dans la base de données :

conn, _ := pool.Acquire(ctx)
conn.Exec(ctx, "LISTEN events")
notification, _ := conn.Conn().WaitForNotification(ctx)
fmt.Println(notification.Payload)

pgx avec database/sql

Utilisez pgx comme pilote database/sql pour assurer la compatibilité avec le code existant fondé sur sql :

import pgxstdlib "github.com/jackc/pgx/v5/stdlib"
db := sql.OpenDB(pgxstdlib.OpenDBFromPool(pool))

pgconn pour les opérations de bas niveau

pgconn est la bibliothèque de connexion de bas niveau de pgx, qui expose le protocole filaire PostgreSQL brut. Utilisez-la pour les opérations sur un protocole personnalisé ou pour les outils d’administration.

Vérification rapide

Pourquoi le protocole COPY de pgx est-il plus rapide que plusieurs instructions INSERT ?

Récapitulatif : pgx

Points clés :

  • pgxpool pour un pool de connexions géré ; configurez-le avec MaxConns
  • CollectRows + RowToStructByName pour une analyse ergonomique
  • SendBatch pour plusieurs requêtes en un seul aller-retour
  • CopyFrom pour les insertions en masse à haut débit

Questions Fréquemment Posées

La leçon « pgx : pilote PostgreSQL hautes performances » est-elle gratuite ?

Oui — le texte complet de « pgx : pilote PostgreSQL hautes performances » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « pgx : pilote PostgreSQL hautes performances » ?

pgxpool, protocole Copy et requêtes par lots Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « pgx : pilote PostgreSQL hautes performances » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. database/sql et pilotes
  2. sqlx : analyse des structs et requêtes nommées
  3. pgx : pilote PostgreSQL hautes performances
  4. Transactions et migrations
← Retour à Go Academy