Go Academy · Pelajaran

pgx: Pemacu PostgreSQL Berprestasi Tinggi

pgxpool, protokol Copy dan pertanyaan kelompok

Pelajaran 3 daripada 413 langkah

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
Percuma untuk bermula

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

  1. database/sql dan Pemacu
  2. sqlx: Pengimbasan Struct dan Pertanyaan Bernama
  3. pgx: Pemacu PostgreSQL Berprestasi Tinggi
  4. Transaksi dan Migrasi
← Kembali ke Go Academy