Postgresql Config File Ayarlanması (DB Tuning)

Cihat Küçükbağrıaçık
3 min readFeb 26, 2023

--

Postgresql config ayarları tanımlarını bir yazıya sığdırmak oldukça zor. Biz sadece bazılarını işliyor olacağız. Bir önceki yazımızda Ubuntu 22.04 LTS üzerine Postgresql 15 kurulumuzu tamamladık. Bu yazıyı devamı olarak görebilirsiniz.

Bu yazıda Ubuntu sanal makine üzerine kuruludur. O yüzden özellikleri oldukça düşüktür. Siz kendi cihazınıza göre ayarları tanımlamayı unutmayın.

Uyarı !!! Eğer yeni tecrübeye sahipseniz. Bu ayarlar Prod ortamlarında direkt olarak uygulamayın. Sizde sanal bir sunucu kurup orada testlerinizi yaptıktan sonra Prod ortamında çalışmalarınızı gerçekleştirin.

Yapılandırmamızı sunucumuzun özelliklerini baz alarak yapacağız. Sunucumuzun CPU, RAM ve Disk özelliklerini öğrenelim.

# CPU özelliklerini listele.
lscpu

# RAM listele.
free -h

# Diskleri listele.
lsblk

Sonuç olarak 2 CPU, 4 GB RAM ve 10 GB Disk özelliklerine sahip sunucumuz var.

İnternette bir çok Postgresql Configuration hesaplaması yapan online site mevcut. Ben aralarında iyi olduğunu düşündüğüm siteyi size paylaşıyorum. Bu site sizden sistem bilgilerini girmenizi isteyerek sisteminiz için tavsiye edilen configuration ayarlarını verecektir.

Site size sadece mantıklı olan ve tavsiye edilen bilgiler verecektir. Sisteminizin tam olarak nasıl çalışacağını bilemiyeceğini unutmayın !!! Sitenin verdiği bütün ayarları güncellemeyeceğiz. Bize en çok lazım olan ayarların güncellenmesini sağlayacağız. Siz daha detaylı bilgiler ile araştırmak isterseniz. Linkteki siteyi inceleyebilirsiniz. Bize birde Türkçe kaynak verin derseniz. Birde bu siteye göz atın.

postgresql.conf dosyasını düzenleme modunda açıp. Aşağıdaki komutları güncelliyoruz.

# postgresql.conf dosyasını düzenle.
nano /etc/postgresql/15/main/postgresql.conf
# Connectivity
max_connections = 300

# Memory Settings
shared_buffers = '1024 MB'
work_mem = '32 MB'
maintenance_work_mem = '320 MB'
effective_io_concurrency = 100
random_page_cost = 1.25

# Monitoring
shared_preload_libraries = 'pg_stat_statements'

# Checkpointing:
checkpoint_timeout = '15 min'
checkpoint_completion_target = 0.9
max_wal_size = '1024 MB'
min_wal_size = '512 MB'

# WAL writing
wal_compression = on
wal_buffers = -1
wal_writer_delay = 200ms
wal_writer_flush_after = 1MB

# Parallel queries:
max_worker_processes = 2
max_parallel_workers_per_gather = 1
max_parallel_maintenance_workers = 1
max_parallel_workers = 2

Gerekli düzenlemeleri tamamladıktan sonra kayıt edip çıkıyoruz. Son olarak ayarların tamamlanması için Postgresql servisini yeniden başlatıyoruz. Servisin doğru çalıştığına emin oluruz.

# Postgresql servisini yeniden başlat.
systemctl restart postgresql
# Postgresql servisinin durumunu kontrol et.
systemctl status postgresql

Şimdi ayarlarımızın geçerli olup olmadığını kontrol edelim. Ben sadece birkaçını kontrol ettim. Siz kontrol etmek istediğiniz parametrenin başına “show” ekleyerek gerekli kontrolü sağlayabilirsiniz.

# Postgresql kullanıcısına geçiş sağlanır.
su - postgres

# psql giriş yapılır.
psql

# Maximum connection sayısını listele.
show max_connections;

# Shared memory buffers için kullandığı bellek miktarını listele.
show shared_buffers;

# Sorgular tarafından kullanılacak maksimum bellek miktarını listele.
show work_mem;

# psql'den çıkış yapılır.
\q

Kaynakça

--

--

No responses yet