smaple.tr
PostgreSQL

PostgreSQL Performans ve Ölçeklendirme Rehberi [2026]

Mehmet Kurtipek
April 9, 2026
7 min read
PostgreSQL
veritabanı performansı
indexleme
replikasyon
partitioning
connection pooling

PostgreSQL Performans ve Olceklendirme Rehberi

PostgreSQL, acik kaynakli iliskisel veritabani yonetim sistemleri arasinda kurumsal projelerde en cok tercih edilen cozumlerden biri haline geldi. Ancak veri hacmi ve kullanici sayisi arttikca, varsayilan yapilandirmayla calismanin sinirlarini hizla hissedersiniz. Bu rehberde PostgreSQL performans optimizasyonunun temel yaklasimlarini, olceklendirme stratejilerini ve uretim ortaminda karsilasilan sorunlarin cozumlerini ele aliyoruz.

PostgreSQL Neden Kurumsal Tercihlerde One Cikiyor

PostgreSQL, ACID uyumlu islem yonetimi, zengin veri tipi destegi, guclu uzanti ekosistemi ve aktif topluluk katilimiyla ozellikle kurumsal projelerde guvenirligi kanitlamis bir veritabanidir. JSON/JSONB destegi sayesinde yari-yapisal verileri iliskisel modelle bir arada yonetebilirsiniz. Lisans maliyeti olmamasi, Oracle veya SQL Server'dan gecis yapan kurumlarda onemli bir tasarruf kalemi olusturur.

2026 itibariyle PostgreSQL 17, artan paralellik destegi, gelismis mantiksal replikasyon ozellikleri ve iyilestirilmis VACUUM performansiyla kurumsal ihtiyaclara her versiyon daha iyi yanit veriyor.

Sorgu Performans Analizi

Performans iyilestirmesinin ilk adimi, yavas sorgulari tanimlamak ve analiz etmektir. PostgreSQL bu konuda iki temel arac sunar.

EXPLAIN ANALYZE ile Sorgu Plani Inceleme

EXPLAIN ANALYZE komutu, sorgunun gercek calisma planini ve her adimin ne kadar sure aldigini gosterir:

EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
SELECT o.id, o.total, c.name
FROM orders o
JOIN customers c ON o.customer_id = c.id
WHERE o.created_at >= '2026-01-01'
  AND o.status = 'completed';

Ciktidaki Seq Scan, Index Scan, Hash Join gibi operatorlere dikkat edin. Yuksek actual time degerleri ve beklenmedik Seq Scan kullanimi, optimizasyon gerektiren noktalari isaret eder.

pg_stat_statements ile Sistem Genelinde Izleme

pg_stat_statements uzantisi, veritabaninda calisan tum sorgularin istatistiklerini toplar:

CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

SELECT query,
       calls,
       mean_exec_time,
       total_exec_time,
       rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 20;

Bu sorgu, toplam calisma suresi en yuksek 20 sorguyu listeler. Optimizasyon onceliklerinizi belirlemek icin ideal bir baslangic noktasidir.

Indeks Stratejileri

Dogru indeks secimi, sorgu performansini onlarca kat iyilestirebilir. PostgreSQL farkli kullanim senaryolari icin cesitli indeks turleri sunar.

Indeks Turu Kullanim Alani Ornek Senaryo
B-tree Esitlik ve aralik sorgulari WHERE created_at BETWEEN ... AND ...
GIN Full-text arama, JSONB, dizi icerikleri WHERE tags @> '{"postgresql"}'
GiST Geometrik veri, yakinlik sorgulari PostGIS ile konum bazli sorgular
BRIN Fiziksel siralama ile korele buyuk tablolar Zaman damgasina gore siralanan log tablolari

Pratik Indeks Olusturma Ornekleri

-- Belirli kosullara gore filtrelenmis parcali indeks
CREATE INDEX idx_orders_completed ON orders (created_at)
WHERE status = 'completed';

-- JSONB alanlari icin GIN indeks
CREATE INDEX idx_products_metadata ON products USING GIN (metadata);

-- Buyuk log tablolari icin BRIN indeks
CREATE INDEX idx_logs_created ON application_logs USING BRIN (created_at);

Parcali indeksler (partial index), yalnizca belirli kosullara uyan satirlari indeksleyerek hem disk kullanimini azaltir hem de yazma performansini korur.

Connection Pooling

PostgreSQL her baglanti icin ayri bir isletim sistemi sureci olusturur. Yuzlerce es zamanli baglantida bu model bellek ve CPU acisindan darbogazlara yol acar. Connection pooling bu sorunu cozer.

PgBouncer ve pgpool-II Karsilastirmasi

Ozellik PgBouncer pgpool-II
Temel Amac Baglanti havuzlama Havuzlama + yuk dengeleme + replikasyon
Bellek Kullanimi Cok dusuk (~2 KB/baglanti) Daha yuksek
Pooling Modlari Session, transaction, statement Session
Kurulum Karmasikligi Basit Daha karmasik
Sorgu Yonlendirme Yok Read/Write ayirimi destekler

Cogu senaryo icin PgBouncer, dusuk kaynak tuketimi ve transaction modu destegiyle en pratik cozumdur:

; pgbouncer.ini
[databases]
mydb = host=127.0.0.1 port=5432 dbname=mydb

[pgbouncer]
listen_port = 6432
pool_mode = transaction
max_client_conn = 1000
default_pool_size = 50
reserve_pool_size = 10

Tablo Partitioning

Buyuk tablolari mantiksal parcalara bolmek, sorgu performansini ve bakim islemlerini onemli olcude iyilestirir. PostgreSQL 10 ile gelen deklaratif partitioning, bu islemi oldukca kolaylastirdi.

Partitioning Turleri

Range Partitioning -- Tarih veya sayisal araliklar icin idealdir:

CREATE TABLE orders (
    id BIGSERIAL,
    customer_id INTEGER,
    total NUMERIC,
    created_at TIMESTAMPTZ
) PARTITION BY RANGE (created_at);

CREATE TABLE orders_2026_q1 PARTITION OF orders
    FOR VALUES FROM ('2026-01-01') TO ('2026-04-01');
CREATE TABLE orders_2026_q2 PARTITION OF orders
    FOR VALUES FROM ('2026-04-01') TO ('2026-07-01');

List Partitioning -- Kategori veya bolge bazli ayirmalar icin uygundur. Hash Partitioning ise esit dagilim gerektiren senaryolarda veriyi partition sayisina gore dagitir.

pg_partman uzantisi ile partition olusturma, silme ve bakim islemlerini otomatiklestirmek mumkundur.

Replikasyon Turleri

Streaming Replikasyon

WAL (Write-Ahead Log) kayitlarini surekli olarak bir veya daha fazla standby sunucuya aktarir. Tum veritabanini birebir kopyalar ve yuksek erisilebilirlik ile okuma olceklendirmesi icin kullanilir.

Mantiksal Replikasyon (Logical Replication)

Belirli tablolari veya veri altsetlerini farkli PostgreSQL orneklerine kopyalar. Farkli versiyonlar arasi replikasyon, secici veri paylasimi ve veri ambari beslemesi gibi senaryolarda tercih edilir.

Ozellik Streaming Logical
Kapsam Tum veritabani Tablo bazinda
Versiyon Uyumu Ayni major versiyon Farkli versiyonlar arasi
DDL Replikasyonu Otomatik Manuel
Okuma Sorgulari Standby uzerinde Subscriber uzerinde

Read Replica Stratejileri

Okuma agirlikli uygulamalarda, sorgu yukunu read replica sunuculara dagitmak hem performansi arttirir hem de ana sunucu uzerindeki baskiyi azaltir. Uygulama katmaninda okuma ve yazma islemlerini ayirmak icin birden fazla yaklasim vardir:

  • Uygulama seviyesinde ayrim: ORM veya veritabani baglanti katmaninda yazma islemlerini primary'ye, okuma islemlerini replica'ya yonlendirme.
  • Proxy katmani: pgpool-II veya ProxySQL gibi araclarin otomatik read/write splitting ozelligi.
  • DNS bazli yonlendirme: Farkli endpoint'ler uzerinden okuma ve yazma trafiklerini ayirma.

Replikasyon gecikmesini (replication lag) izlemek kritik oneme sahiptir. Gecikme toleransiniza gore "eventually consistent" okuma sorgularini replica'ya yonlendirin; tutarlilik gerektiren sorgulari ise her zaman primary'den okuyun.

Vacuum ve Autovacuum Optimizasyonu

PostgreSQL'in MVCC (Multi-Version Concurrency Control) mimarisi, guncellenen veya silinen satirlarin eski versiyonlarini ("dead tuple") tabloda birakir. VACUUM islemi bu olus satirlari temizler ve alani yeniden kullanilabilir kilar.

Varsayilan autovacuum ayarlari cogu kucuk-orta olcekli veritabani icin yeterlidir; ancak yuksek yazma hacmine sahip tablolarda ozellestirilmis yapilandirma gereklidir:

ALTER TABLE orders SET (
    autovacuum_vacuum_scale_factor = 0.05,
    autovacuum_analyze_scale_factor = 0.02,
    autovacuum_vacuum_cost_delay = 10
);

pg_stat_user_tables gorunumunden n_dead_tup degerini izleyerek, autovacuum'un yeterince sik calisip calismadigini dogrulayabilirsiniz.

PostgreSQL Uzantilari

PostgreSQL'in guclu yonlerinden biri, uzantilar araciligiyla islevselligini genisletebilmesidir.

  • pg_partman: Partition yonetimini otomatiklestirir; yeni partitionlar olusturur, eskileri arsivler.
  • TimescaleDB: Zaman serisi verileri icin optimize edilmis hypertable yapisi sunar. IoT, metrik toplama ve log analizi senaryolarinda yuksek performans saglar.
  • pgvector: Vektor benzerlik aramalari icin tasarlanmistir. Yapay zeka uygulamalarinda embedding depolama ve semantik arama icin giderek daha yaygin kullanilmaktadir.
  • PostGIS: Cografi ve mekansal veri islemleri icin endustri standardi uzantidir. Konum bazli sorgular, rota hesaplama ve harita uygulamalari icin vazgecilmezdir.

Yuksek Erisilebilirlik (HA) Mimarileri

Uretim ortamlarinda tek sunucu ile calismak kabul edilebilir bir risk degildir. PostgreSQL icin en yaygin HA cozumleri sunlardir:

Patroni

Etcd, Consul veya ZooKeeper uzerinde lider secimi yapan, otomatik failover saglayan bir HA framework'udur. Kubernetes ortamlarinda Spilo imaji ile birlikte genis kullanim alani bulmustur.

pg_auto_failover

PostgreSQL'in kendi ekosisteminden cikan, daha basit bir otomatik failover cozumudur. Harici bir dagitik anahtar-deger deposu gerektirmez; kendi monitor node'u uzerinden calisir.

Her iki cozumde de failover suresi genellikle 10-30 saniye araligindadir. Uygulama katmaninda baglanti yeniden deneme (retry) mekanizmasini mutlaka uygulayin.

Bulut vs Self-Hosted PostgreSQL

Kriter Yonetilen Bulut Servisi (RDS, Cloud SQL) Self-Hosted
Kurulum Suresi Dakikalar icinde Saatler-gunler
Bakim Yukü Saglayici yonetir Ekip yonetir
Maliyet (kucuk olcek) Daha yuksek Daha dusuk
Maliyet (buyuk olcek) Belirgin sekilde yuksek Daha kontrol edilebilir
Uzanti Destegi Sinirli (saglayiciya bagli) Tam
Performans Kontrolu Sinirli parametreler Tam erisim
HA ve Yedekleme Dahili Manuel kurulum

Kucuk ve orta olcekli projeler icin yonetilen bulut servisleri operasyonel yuku onemli olcude azaltir. Ancak yuksek olcekli, ozel yapilandirma gerektiren veya veri lokalizasyonu zorunlulugu olan projelerde self-hosted kurulum daha dogru bir tercih olabilir.

Sonuc

PostgreSQL performans optimizasyonu; sorgu analizi, dogru indeksleme, connection pooling, partitioning ve replikasyon stratejilerinin bir butun olarak ele alinmasini gerektirir. Tek basina bir yapilandirma degisikligi mucize yaratmaz -- onemli olan, uygulamanizin erisim desenlerini anlamak ve bu desenlere uygun optimizasyonlari katmanli bir sekilde uygulamaktir.

Smart Maple olarak, Ankara merkezli yazilim gelistirme projelerimizde PostgreSQL'i yogun bicimde kullaniyoruz. Yuksek performansli veritabani mimarisi tasarimi, mevcut sistemlerin optimizasyonu ve olceklendirme danismanligi konularinda teknik ekibimizle iletisime gecebilirsiniz.

Related Articles

August 10, 2026

MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a Taşıma

Giriş: MLOps Nedir ve Neden Önemlidir? Makine öğrenmesi modelleri geliştirmek günümüzde nispeten kolaydır. Açık kaynak kütüphaneleri kullanarak son derece başarılı modeller oluşturabiliriz. Ancak bu modelleri production ortamına taşıyarak, ölçeklendirebilir, güvenilir ve sürdürülebilir şekilde çalıştırmak tamamen farklı bir hikayedir. Araştırmalara göre, veri bilimcileri tarafından geliştirilen makine öğrenmesi modellerinin %87'si hiçbir zaman production ortamına ulaşmaz. Bu başarısızlı

Read More
August 9, 2026

LLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]

LLM Fine-Tuning: Kurumsal Yapay Zeka Stratejisinin Temel Taşı Büyük dil modelleri (LLM), genel amaçlı metin üretimi ve anlama konusunda etkileyici performans sergiliyor. Ancak kurumsal ortamlarda belirli bir alan, terminoloji veya iş sürecine uyum sağlamaları gerektiğinde, genel bilgileri çoğu zaman yetersiz kalıyor. Bu noktada fine-tuning, yani ince ayar süreci devreye giriyor. Fine-tuning sayesinde mevcut bir temel modeli, kendi verileriniz ve ihtiyaçlarınız doğrultusunda özelleştirmek

Read More
August 8, 2026

Bilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI

Bilgisayarlı Görü Uygulamaları: Endüstriyel ve Medikal AI'nin Temel Teknolojisi Bilgisayarlı görü, makine öğrenmesinin en etkili alanlarından biridir. Türkiye'de yaşanan dijital dönüşüm sürecinde, özellikle üretim, sağlık ve lojistik sektörlerinde görü tabanlı otomasyon kritik hale gelmiştir. Smart Maple olarak Ankara'da geliştirdiğimiz çözümler, son beş yılda 150+ kuruluşunun üretim verimliliğini ortalama %35 oranında artırmıştır. Bu rehberde, bilgisayarlı görü teknolojisinin iş değeri

Read More