Ömer Özbay
PostgreSQL
Database

PostgreSQL Performance Tuning: EXPLAIN ANALYZE Rehberi

22 Şubat 2026 18 dk okuma 2.9K görüntülenme

Yavaş PostgreSQL sorguları uygulamanızın darboğazı olabilir. EXPLAIN ANALYZE ile sorgu planlarını okumayı öğrenerek saniyeler süren sorguları milisaniyelere indirebilirsiniz.

EXPLAIN ANALYZE Temelleri

-- Sorgu planını ve gerçek çalışma süresini göster EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) SELECT u.name, COUNT(p.id) as post_count FROM users u LEFT JOIN posts p ON p.user_id = u.id WHERE u.created_at > '2025-01-01' GROUP BY u.id, u.name ORDER BY post_count DESC LIMIT 10;

Çıktıyı Okuma

  • Seq Scan: Tüm tabloyu tarıyor — index ekleyin
  • Index Scan: Index kullanıyor — iyi
  • Hash Join vs Nested Loop: Büyük tablolarda Hash Join daha hızlı
  • actual rows vs estimated rows: Büyük fark varsa ANALYZE çalıştırın

Index Stratejileri

-- Partial index: sadece aktif kullanıcılar için CREATE INDEX idx_users_active ON users(email) WHERE is_active = true; -- Composite index: sık birlikte kullanılan kolonlar CREATE INDEX idx_posts_user_date ON posts(user_id, created_at DESC); -- Expression index: fonksiyon sonuçları için CREATE INDEX idx_users_lower_email ON users(LOWER(email));

pg_stat_statements ile Yavaş Sorguları Bulma

-- En yavaş 10 sorguyu listele SELECT query, calls, mean_exec_time, total_exec_time FROM pg_stat_statements ORDER BY mean_exec_time DESC LIMIT 10;

Sonuç

EXPLAIN ANALYZE, PostgreSQL optimizasyonunun temel aracı. Düzenli olarak yavaş sorgu loglarını inceleyin, gereksiz Seq Scan'leri index'e dönüştürün ve istatistikleri güncel tutun.

Faydalı buldunuz mu? Bu içeriği kendi ağınızla paylaşarak bana destek olabilirsiniz.