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
- database/sql et pilotes
- sqlx : analyse des structs et requêtes nommées
- pgx : pilote PostgreSQL hautes performances
- Transactions et migrations