Hizmetler Hosting & Sunucu Araçlar Blog Ara Kurumsal EnglishEN
Teklif Alın

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