0Pricing
Go Academy · Ders

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

  1. database/sql ve Sürücüler
  2. sqlx: Yapı Tarama ve Adlandırılmış Sorgular
  3. pgx: Yüksek Performanslı PostgreSQL Sürücüsü
  4. İşlemler ve Geçişler
← Go Academy Sayfasına Dön