EXPLAIN ANALYZE ile Sorgu Analizi

Her yavaş sorgunun başına EXPLAIN ANALYZE ekleyin. Seq Scan, Nested Loop ve yüksek cost değerlerini arayın.

İlgili rehberler: Yazılım geliştirme süreçleri · Git ileri seviye komutlar · Redis nedir, nasıl kullanılır · Docker ile deploy · KEYDAL yazılım geliştirme hizmetleri

EXPLAIN ANALYZE SELECT u.name, COUNT(o.id)
FROM users u
JOIN orders o ON o.user_id = u.id
WHERE o.created_at > '2026-01-01'
GROUP BY u.name
ORDER BY COUNT(o.id) DESC
LIMIT 10;

Index Stratejileri

B-tree (varsayılan): Eşitlik ve aralık sorguları. GIN: Full-text search, JSONB, array. GiST: Geometrik, range. Partial index: Sadece belirli koşullardaki satırları indexle.

-- Composite index (sık kullanılan WHERE + ORDER BY)
CREATE INDEX idx_orders_user_date ON orders(user_id, created_at DESC);

-- Partial index (sadece aktif kayıtlar)
CREATE INDEX idx_active_users ON users(email) WHERE active = true;

-- GIN index for JSONB
CREATE INDEX idx_product_tags ON products USING GIN(tags);

Connection Pooling

Her bağlantı ~10MB RAM tüketir. PgBouncer veya uygulama seviyesinde pool kullanın. max_connections değerini gereksiz yüksek tutmayın.

Vacuum ve Autovacuum

PostgreSQL MVCC kullanır — DELETE ve UPDATE eski satırları silmez, dead tuple bırakır. VACUUM bunları temizler. Autovacuum'u kapatmayın, parametrelerini tune edin.

-- Tablo bloat kontrolü
SELECT relname, n_dead_tup, n_live_tup,
       ROUND(n_dead_tup::numeric / GREATEST(n_live_tup, 1) * 100, 1) AS dead_pct
FROM pg_stat_user_tables
WHERE n_dead_tup > 1000
ORDER BY n_dead_tup DESC;

Temel postgresql.conf Tuning

shared_buffers = '256MB'          # RAM'in %25'i
work_mem = '16MB'                 # Sorgu başına (dikkat: connection * work_mem)
maintenance_work_mem = '128MB'    # VACUUM, CREATE INDEX için
effective_cache_size = '1GB'      # OS cache tahmini
random_page_cost = 1.1            # SSD için (HDD: 4.0)

Modern Yazılım Geliştirme ve DevOps Pratikleri

Profesyonel yazılım geliştirme süreci üç pillar üzerine kuruludur: kaynak kontrolü (Git + GitHub/GitLab pull request akışı, code review zorunlu), CI/CD pipeline (otomatik test + lint + build + deploy), ve gözlemlenebilirlik (Sentry/Datadog/Grafana ile log, metric, trace toplama). Test piramidi (unit > integration > e2e) ile kod kalitesini garantilemek, mikroservis mimarisinde Docker container ve Kubernetes orkestrasyonu kullanmak, REST veya GraphQL API tasarımında OpenAPI/GraphQL Schema sözleşmesi tutmak modern standardlardır. Yazılım geliştirme yaşam döngüsü boyunca (gereksinim → tasarım → implementasyon → test → deploy → bakım) Agile/Scrum sprintleri 1-2 hafta, DevOps takımları sürekli teslim (continuous delivery) prensibiyle çalışır.

WhatsApp