pgx: Pemacu PostgreSQL Berprestasi Tinggi
pgxpool, protokol Copy dan pertanyaan kelompok
pgx: Pemacu PostgreSQL Berprestasi Tinggi ialah pelajaran Go Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Go Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Apakah itu pgx?
github.com/jackc/pgx/v5 ialah pemacu Go khusus PostgreSQL dengan API natif yang menyokong ciri PostgreSQL lanjutan yang tidak tersedia dalam database/sql: protokol COPY, pemberitahuan, cache pernyataan yang disediakan dan banyak lagi.
Menyambung dengan pgx
Gunakan kumpulan natif pgx atau lapisan keserasian 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 mencipta kumpulan sambungan terurus. Konfigurasikannya dengan konfigurasi yang dihuraikan:
config, _ := pgxpool.ParseConfig("postgres://...")
config.MaxConns = 10
pool, _ := pgxpool.NewWithConfig(ctx, config)Membuat pertanyaan 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 lajur kepada medan struktur menggunakan nama medan huruf kecil atau tag db, sama seperti Select dalam sqlx.
Mengimbas satu baris
Gunakan pool.QueryRow untuk pertanyaan satu baris:
var name string
err := pool.QueryRow(ctx, "SELECT name FROM users WHERE id=$1", id).Scan(&name)Pertanyaan kelompok
pgx menyokong penghantaran beberapa pertanyaan dalam satu perjalanan pergi balik rangkaian 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 sisipan pukal, pgx menyokong protokol COPY binari PostgreSQL, yang jauh lebih pantas daripada pernyataan INSERT individu:
conn, _ := pool.Acquire(ctx)
defer conn.Release()
conn.Conn().CopyFrom(ctx, pgx.Identifier{"users"}, []string{"name","email"}, pgx.CopyFromRows(rows))Listen/NOTIFY
pgx menyokong LISTEN/NOTIFY PostgreSQL untuk terbitan/langganan masa nyata dalam pangkalan 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 pemacu database/sql untuk keserasian dengan kod berasaskan sql yang sedia ada:
import pgxstdlib "github.com/jackc/pgx/v5/stdlib"
db := sql.OpenDB(pgxstdlib.OpenDBFromPool(pool))pgconn pada aras rendah
pgconn ialah pustaka sambungan aras rendah pgx yang mendedahkan protokol wayar PostgreSQL mentah. Gunakannya untuk kerja protokol tersuai atau alat pentadbiran.
Semakan Pantas
Mengapakah protokol COPY pgx lebih pantas daripada beberapa pernyataan INSERT?
Ringkasan: pgx
Perkara utama:
- pgxpool untuk kumpulan sambungan terurus; konfigurasikan dengan MaxConns
- CollectRows + RowToStructByName untuk pengimbasan yang mudah digunakan
- SendBatch untuk beberapa pertanyaan dalam satu perjalanan pergi balik
- CopyFrom untuk sisipan pukal berthroughput tinggi
Pelajari Go dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “pgx: Pemacu PostgreSQL Berprestasi Tinggi” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Go Academy, termasuk “pgx: Pemacu PostgreSQL Berprestasi Tinggi”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “pgx: Pemacu PostgreSQL Berprestasi Tinggi”?
pgxpool, protokol Copy dan pertanyaan kelompok Anda berlatih Go Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Go Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Go Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “pgx: Pemacu PostgreSQL Berprestasi Tinggi” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- database/sql dan Pemacu
- sqlx: Pengimbasan Struct dan Pertanyaan Bernama
- pgx: Pemacu PostgreSQL Berprestasi Tinggi
- Transaksi dan Migrasi