Performance Profiling & Query Optimization
Veritabanı Performans Optimizasyonu
İndeks tasarımı, bellek havuzları boyutlandırma, TempDB/VACUUM tuning ve EXPLAIN plan okuma reçeteleri.
Motor Filtresi:
PostgreSQL
PostgreSQL: İndeksleme Stratejileri & VACUUM Optimizasyonu
Gereksiz indeks yazma I/O'sunu artırır; eksik indeks disk taraması (Seq Scan) ile CPU'yu kilitler. Dead tuple birikmesi autovacuum tuning gerektirir.
💡 Altın Kural:Yüksek kardinalite için B-Tree, JSONB / dizi aramaları için GIN, zaman serisi büyük tablolar için BRIN kullanın.
-- Kapsayan İndeks (Covering Index - Table Access'i sıfırlar):
CREATE INDEX idx_orders_user_covering ON orders (user_id) INCLUDE (total_amount, status);
-- Autovacuum Hızlandırma:
ALTER TABLE high_write_table SET (autovacuum_vacuum_scale_factor = 0.05, autovacuum_vacuum_cost_limit = 2000);PostgreSQL
PostgreSQL: shared_buffers & work_mem Boyutlandırma
Veritabanının disk I/O'ya gitmeden RAM üzerinden sayfaları karşılaması (Hit Ratio > %99).
💡 Altın Kural:RAM'in %25'i shared_buffers, %75'i OS page cache (effective_cache_size) ve sorgu karmaşıklığına göre work_mem atanmalıdır.
shared_buffers = 16GB
effective_cache_size = 48GB
work_mem = 64MB
maintenance_work_mem = 2GBMySQL
MySQL: InnoDB Buffer Pool & Redo Log Tuning
InnoDB motorunun disk darboğazlarını önlemesi ve lock contention sürelerini minimize etmesi.
💡 Altın Kural:Dedicated DB sunucularında RAM'in %70-%80'i innodb_buffer_pool_size olarak atanmalı ve birden çok instance'a bölünmelidir.
[mysqld]
innodb_buffer_pool_size = 48G
innodb_buffer_pool_instances = 8
innodb_log_file_size = 4G
innodb_flush_log_at_trx_commit = 2 # Yüksek write throughput için