PostgreSQL, güçlü ve esnek bir veritabanı motorudur ancak varsayılan ayarlarla çalıştırıldığında çoğu VPS ortamında yeterli performansı gösteremez. VPS üzerindeki kaynakların sınırlı olduğu göz önüne alındığında, PostgreSQL’in performansını optimize etmek kritik hâle gelir.
Bu yazıda PostgreSQL’in postgresql.conf
dosyasındaki temel performans ayarlarını ele alacak, örneklerle VPS ortamına uygun değerleri açıklayacağız.
1. shared_buffers
– Bellek Paylaşımı
Bu ayar, PostgreSQL’in verileri RAM’de tutmasını sağlar. Doğrudan performansa etki eder.
- Öneri: VPS RAM’inin %25–40’ı kadar bir değer.
- Örnek: 4 GB RAM için
shared_buffers = 1GB
RAM yetersizse bu değeri fazla artırmak, sistem takılmalarına yol açabilir.
2. work_mem
– Sorgu İşlem Belleği
Her bir sorgu için ayrılan geçici bellek miktarıdır. JOIN ve sort işlemlerinde etkilidir.
- Öneri: Yoğun sorgularda 4–16 MB arası ayar yapılabilir.
- Örnek:
work_mem = 8MB
Aynı anda çalışan sorgu sayısı kadar bellek kullanacağı unutulmamalıdır.
3. effective_cache_size
– Tahmini Disk Cache Boyutu
PostgreSQL’in sorgu planlayıcısının, hangi verilerin disk yerine RAM’den okunabileceğini tahmin etmesini sağlar.
- Öneri: VPS RAM’inin %50–75’i.
- Örnek:
effective_cache_size = 2GB
4. max_connections
– Eşzamanlı Bağlantı Sınırı
Her bağlantı bir miktar RAM tüketir. Düşük trafikli VPS’lerde yüksek değer sorun yaratabilir.
- Öneri: 50–100 arası.
- Örnek:
max_connections = 80
Daha fazlası gerekiyorsa PgBouncer gibi bağlantı havuzu yazılımları önerilir.
5. wal_buffers
, checkpoint_segments
, checkpoint_timeout
Veri bütünlüğü ve yazma performansı için önemlidir. Sık checkpoint işlemleri disk I/O’yu artırır.
wal_buffers = 16MB
checkpoint_timeout = 15min
checkpoint_completion_target = 0.9
Bu değerler daha stabil yazma işlemleri sağlar.
6. Autovacuum Ayarları
Veritabanı büyüdükçe, tablo temizliği önem kazanır. Ancak VPS’te fazla autovacuum işlemi CPU’yu zorlayabilir.
autovacuum = on
(aktif kalmalı)autovacuum_naptime = 60s
autovacuum_vacuum_cost_limit = 200
İhtiyaca göre daha agresif veya pasif hale getirilebilir.
7. Disk ve I/O Optimizasyonu
- PostgreSQL verileri SSD disk üzerinde daha iyi performans verir.
fsync = on
kalmalı (veri kaybına karşı)- VPS içinde disk IOPS sınırlıysa, sorgular optimize edilmelidir.
8. Loglama ve İzleme Ayarları
Performans sorunlarını anlamak için log_min_duration_statement
gibi ayarlarla yavaş sorgular izlenmelidir:
log_min_duration_statement = 500 # 500ms üzeri sorgular loglanır
log_checkpoints = on
log_connections = on
log_lock_waits = on
9. PgTune ve Aracılar
Performans ayarlarını otomatik hesaplamak için pgtune.leopard.in.ua gibi araçlar kullanılabilir. VPS kaynak bilgilerinizi girerek örnek postgresql.conf
ayarları alabilirsiniz.
Sonuç
VPS ortamında PostgreSQL performansını artırmak, sınırlı kaynakları doğru yapılandırmaya bağlıdır. Yukarıda belirtilen ayarlar doğrudan RAM, CPU ve disk kullanımını etkileyerek daha hızlı ve tutarlı sorgu sonuçları alınmasını sağlar. Her sistem farklı olduğu için ayarların test edilmesi ve izlenerek optimize edilmesi gerekir.