pgx: Driver PostgreSQL Berkinerja Tinggi
pgxpool, protokol Copy, dan kueri batch
pgx: Driver PostgreSQL Berkinerja Tinggi adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Apa itu pgx?
github.com/jackc/pgx/v5 adalah pengandar Go khusus PostgreSQL dengan API native yang mendukung fitur PostgreSQL tingkat lanjut yang tidak tersedia di database/sql: protokol COPY, notifikasi, penyimpanan tembolok pernyataan terkompilasi, dan lainnya.
Menghubungkan dengan pgx
Gunakan kumpulan native pgx atau lapisan kompatibilitas 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 membuat kumpulan koneksi terkelola. Konfigurasikan dengan parse config:
config, _ := pgxpool.ParseConfig("postgres://...")
config.MaxConns = 10
pool, _ := pgxpool.NewWithConfig(ctx, config)Melakukan kueri dengan pgx
pgx menggunakan fungsi pembantu pool.Query dan 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 memetakan nama kolom ke bidang struktur menggunakan nama bidang dalam huruf kecil atau tag db, serupa dengan Select pada sqlx.
Memindai satu baris
Gunakan pool.QueryRow untuk kueri satu baris:
var name string
err := pool.QueryRow(ctx, "SELECT name FROM users WHERE id=$1", id).Scan(&name)Kueri batch
pgx mendukung pengiriman beberapa kueri dalam satu perjalanan pulang-pergi jaringan menggunakan 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()Protokol COPY
Untuk penyisipan massal, pgx mendukung protokol COPY biner PostgreSQL, yang jauh lebih cepat daripada pernyataan INSERT satu per satu:
conn, _ := pool.Acquire(ctx)
defer conn.Release()
conn.Conn().CopyFrom(ctx, pgx.Identifier{"users"}, []string{"name","email"}, pgx.CopyFromRows(rows))Listen/Notify
pgx mendukung LISTEN/NOTIFY PostgreSQL untuk pub/sub waktu nyata di dalam basis data:
conn, _ := pool.Acquire(ctx)
conn.Exec(ctx, "LISTEN events")
notification, _ := conn.Conn().WaitForNotification(ctx)
fmt.Println(notification.Payload)pgx dengan database/sql
Gunakan pgx sebagai pengandar database/sql agar kompatibel dengan kode berbasis sql yang sudah ada:
import pgxstdlib "github.com/jackc/pgx/v5/stdlib"
db := sql.OpenDB(pgxstdlib.OpenDBFromPool(pool))pgconn untuk tingkat rendah
pgconn adalah pustaka koneksi tingkat rendah milik pgx yang mengekspos protokol kawat PostgreSQL mentah. Gunakan pustaka ini untuk pekerjaan protokol khusus atau alat administrasi.
Pemeriksaan Singkat
Mengapa protokol COPY milik pgx lebih cepat daripada beberapa pernyataan INSERT?
Ringkasan: pgx
Poin-poin penting:
- pgxpool untuk kumpulan koneksi terkelola; konfigurasikan dengan MaxConns
- CollectRows + RowToStructByName untuk pemindaian yang praktis
- SendBatch untuk beberapa kueri dalam satu perjalanan pulang-pergi
- CopyFrom untuk penyisipan massal berthroughput tinggi
Belajar Go dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Pertanyaan yang Sering Diajukan
Apakah pelajaran “pgx: Driver PostgreSQL Berkinerja Tinggi” gratis?
Ya — teks lengkap “pgx: Driver PostgreSQL Berkinerja Tinggi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “pgx: Driver PostgreSQL Berkinerja Tinggi”?
pgxpool, protokol Copy, dan kueri batch Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “pgx: Driver PostgreSQL Berkinerja Tinggi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- database/sql dan Driver
- sqlx: Pemindaian Struct dan Kueri Bernama
- pgx: Driver PostgreSQL Berkinerja Tinggi
- Transaksi dan Migrasi