pgx: driver de PostgreSQL de alto rendimiento
pgxpool, protocolo Copy y consultas por lotes
pgx: driver de PostgreSQL de alto rendimiento es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
¿Qué es pgx?
github.com/jackc/pgx/v5 es un controlador de Go específico para PostgreSQL, con una API nativa que admite funciones avanzadas de PostgreSQL no disponibles en database/sql: protocolo COPY, notificaciones, almacenamiento en caché de sentencias preparadas y mucho más.
Conexión con pgx
Utilice el conjunto nativo de pgx o su capa de compatibilidad con 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 crea un conjunto de conexiones administrado. Configúrelo con una configuración analizada:
config, _ := pgxpool.ParseConfig("postgres://...")
config.MaxConns = 10
pool, _ := pgxpool.NewWithConfig(ctx, config)Consultas con pgx
pgx utiliza las funciones auxiliares pool.Query y 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 asigna los nombres de las columnas a los campos de la estructura mediante nombres de campos en minúsculas o etiquetas db, de forma similar a Select de sqlx.
Escaneo de una sola fila
Utilice pool.QueryRow para consultas de una sola fila:
var name string
err := pool.QueryRow(ctx, "SELECT name FROM users WHERE id=$1", id).Scan(&name)Consultas por lotes
pgx permite enviar varias consultas en un solo viaje de ida y vuelta de red mediante 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()Protocolo COPY
Para inserciones masivas, pgx admite el protocolo COPY binario de PostgreSQL, que es mucho más rápido que las sentencias INSERT individuales:
conn, _ := pool.Acquire(ctx)
defer conn.Release()
conn.Conn().CopyFrom(ctx, pgx.Identifier{"users"}, []string{"name","email"}, pgx.CopyFromRows(rows))Listen/Notify
pgx admite LISTEN/NOTIFY de PostgreSQL para pub/sub en tiempo real dentro de la base de datos:
conn, _ := pool.Acquire(ctx)
conn.Exec(ctx, "LISTEN events")
notification, _ := conn.Conn().WaitForNotification(ctx)
fmt.Println(notification.Payload)pgx con database/sql
Utilice pgx como controlador de database/sql para garantizar la compatibilidad con el código existente basado en sql:
import pgxstdlib "github.com/jackc/pgx/v5/stdlib"
db := sql.OpenDB(pgxstdlib.OpenDBFromPool(pool))pgconn para operaciones de bajo nivel
pgconn es la biblioteca de conexiones de bajo nivel de pgx que expone el protocolo de conexión sin procesar de PostgreSQL. Utilícela para trabajar con protocolos personalizados o crear herramientas de administración.
Comprobación rápida
¿Por qué el protocolo COPY de pgx es más rápido que varias sentencias INSERT?
Recapitulación: pgx
Puntos clave:
- pgxpool para un conjunto de conexiones administrado; configúrelo con MaxConns
- CollectRows + RowToStructByName para un escaneo práctico
- SendBatch para varias consultas en un solo viaje de ida y vuelta
- CopyFrom para inserciones masivas de alto rendimiento
Preguntas frecuentes
¿La lección «pgx: driver de PostgreSQL de alto rendimiento» es gratis?
Sí — el texto completo de «pgx: driver de PostgreSQL de alto rendimiento» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «pgx: driver de PostgreSQL de alto rendimiento»?
pgxpool, protocolo Copy y consultas por lotes Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «pgx: driver de PostgreSQL de alto rendimiento»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- database/sql y drivers
- sqlx: escaneo de structs y consultas con nombre
- pgx: driver de PostgreSQL de alto rendimiento
- Transacciones y migraciones