pgx: Yüksek Performanslı PostgreSQL Sürücüsü
pgxpool, Copy protokolü ve toplu sorgular
pgx: Yüksek Performanslı PostgreSQL Sürücüsü, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
pgx nedir?
github.com/jackc/pgx/v5, database/sql'de bulunmayan gelişmiş PostgreSQL özelliklerini destekleyen yerel API'ye sahip, PostgreSQL'e özgü bir Go sürücüsüdür: COPY protokolü, bildirimler, hazırlanmış ifade önbelleğe alma ve daha fazlası.
pgx ile bağlantı kurma
pgx'in yerel havuzunu veya database/sql uyumluluk katmanını kullanın:
// 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, yönetilen bir bağlantı havuzu oluşturur. Havuzu bir ayrıştırma yapılandırmasıyla yapılandırın:
config, _ := pgxpool.ParseConfig("postgres://...")
config.MaxConns = 10
pool, _ := pgxpool.NewWithConfig(ctx, config)pgx ile sorgulama
pgx, pool.Query ve pgx.CollectRows yardımcı işlevlerini kullanır:
rows, _ := pool.Query(ctx, "SELECT id, name FROM users WHERE active=$1", true)
users, err := pgx.CollectRows(rows, pgx.RowToStructByName[User])RowToStructByName
pgx.RowToStructByName, sütun adlarını küçük harfli alan adlarını veya db etiketlerini kullanarak yapı alanlarıyla eşler; sqlx Select'e benzer.
Tek bir satırı tarama
Tek satırlı sorgular için pool.QueryRow kullanın:
var name string
err := pool.QueryRow(ctx, "SELECT name FROM users WHERE id=$1", id).Scan(&name)Toplu sorgular
pgx, pool.SendBatch kullanarak tek bir ağ gidiş-dönüşünde birden çok sorgu göndermeyi destekler:
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()COPY protokolü
Toplu eklemeler için pgx, tek tek INSERT ifadelerinden çok daha hızlı olan PostgreSQL'in ikili COPY protokolünü destekler:
conn, _ := pool.Acquire(ctx)
defer conn.Release()
conn.Conn().CopyFrom(ctx, pgx.Identifier{"users"}, []string{"name","email"}, pgx.CopyFromRows(rows))Listen/Notify
pgx, veritabanı içinde gerçek zamanlı yayınla/abone ol özelliği için PostgreSQL'in LISTEN/NOTIFY özelliğini destekler:
conn, _ := pool.Acquire(ctx)
conn.Exec(ctx, "LISTEN events")
notification, _ := conn.Conn().WaitForNotification(ctx)
fmt.Println(notification.Payload)database/sql ile pgx
Mevcut sql tabanlı kodla uyumluluk için pgx'i database/sql sürücüsü olarak kullanın:
import pgxstdlib "github.com/jackc/pgx/v5/stdlib"
db := sql.OpenDB(pgxstdlib.OpenDBFromPool(pool))Düşük düzey pgconn
pgconn, ham PostgreSQL kablo protokolünü kullanıma sunan pgx'in düşük düzey bağlantı kitaplığıdır. Özel protokol çalışmaları veya yönetim araçları için kullanın.
Hızlı Kontrol
pgx'in COPY protokolü neden birden çok INSERT ifadesinden daha hızlıdır?
Özet: pgx
Temel noktalar:
- Yönetilen bağlantı havuzu için pgxpool; MaxConns ile yapılandırın
- Kolay tarama için CollectRows + RowToStructByName
- Tek bir ağ gidiş-dönüşünde birden çok sorgu için SendBatch
- Yüksek aktarım hızlı toplu eklemeler için CopyFrom
Sıkça Sorulan Sorular
“pgx: Yüksek Performanslı PostgreSQL Sürücüsü” dersi ücretsiz mi?
Evet — “pgx: Yüksek Performanslı PostgreSQL Sürücüsü” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“pgx: Yüksek Performanslı PostgreSQL Sürücüsü” dersinde ne öğreneceğim?
pgxpool, Copy protokolü ve toplu sorgular Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“pgx: Yüksek Performanslı PostgreSQL Sürücüsü” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- database/sql ve Sürücüler
- sqlx: Yapı Tarama ve Adlandırılmış Sorgular
- pgx: Yüksek Performanslı PostgreSQL Sürücüsü
- İşlemler ve Geçişler