top of page

PostgreSQL Arka Plan Çalışan Süreçleri Nedir ve Ne İş Yaparlar?

  • 18 Ağu
  • 5 dakikada okunur

Güncelleme tarihi: 20 Ağu

PostgreSQL'in Temel Yerleşik Arka Plan Süreçleri
PostgreSQL'in Temel Yerleşik Arka Plan Süreçleri

PostgreSQL ile çalışıyorsanız ve veritabanının perde arkasında neler döndüğünü merak ediyorsanız, doğru yerdesiniz. Bu kılavuz, PostgreSQL arka plan çalışan süreçlerini anlamak isteyen veritabanı yöneticileri ve backend geliştiriciler için yazıldı.


PostgreSQL aslında tek bir süreçten çok daha fazlasını çalıştırıyor. Arka planda, veritabanını ayakta tutan onlarca süreç sessiz sedasız iş görüyor. Bu yazıda şu konuları ele alacağız:

  • PostgreSQL'in yerleşik arka plan süreçleri nelerdir ve her biri ne yapar

  • Bu süreçler veritabanı performansını nasıl doğrudan etkiler

  • Kendi özel arka plan çalışan süreçlerinizi nasıl oluşturabilirsiniz


Teknik detaylara girmeden önce şunu söyleyelim: bu süreçleri anlamak, performans sorunlarını çözmek ve PostgreSQL'i daha verimli kullanmak için gerçekten işe yarıyor.


PostgreSQL Arka Plan Çalışan Süreçlerini Anlamak


Arka Plan Çalışan Süreçlerinin Temel Tanımı


PostgreSQL arka plan çalışan süreçleri, veritabanı sunucusu ayağa kalktığında otomatik olarak başlayan ve arka planda sessiz sedasız çalışan bağımsız süreçlerdir. Kullanıcı sorgularını doğrudan işlemezler; onların asıl işi veritabanının sağlıklı çalışmasını garantilemektir.


PostgreSQL Mimarisindeki Yerleri ve Önemi


PostgreSQL çok süreçli bir mimariye sahip. Her bağlantı için ayrı bir süreç oluşturulur ve bu süreçleri koordine eden bir ana süreç (postmaster) vardır. Arka plan çalışanları bu yapının ayrılmaz bir parçası:

  • Postmaster tüm süreci denetler

  • Arka plan çalışanları bellek yönetimi, temizlik ve replikasyon gibi kritik görevleri üstlenir

  • Backend süreçleri kullanıcı bağlantılarını yönetir

Bu sayede PostgreSQL, kullanıcı trafiğinden bağımsız olarak iç bakımını sürdürebilir.


Standart Arka Plan Süreçlerinden Farkları

Özellik

Standart Backend

Arka Plan Çalışanı

Başlatılma

Kullanıcı bağlantısıyla

Sunucu başlangıcıyla

Görevi

Sorgu işleme

Sistem bakımı

Kullanıcı etkileşimi

Doğrudan

Yok

Yaşam döngüsü

Bağlantı süresiyle sınırlı

Sunucu çalıştığı sürece

Kısaca, standart süreçler kullanıcıya hizmet ederken arka plan çalışanları sahne arkasında işlerin yürümesini sağlar.


PostgreSQL'in Temel Arka Plan Süreçleri


1. Postmaster (Ana Süreç)


  • PostgreSQL'in yönetim merkezi olarak düşünebiliriz.

  • Sunucu başlatıldığında ilk çalışan süreçtir ve diğer tüm süreçleri başlatır.

  • İstemciden gelen bağlantı taleplerini dinler ve her bağlantı için yeni bir backend süreci oluşturur.

  • Sistem çalıştığı sürece aktif kalır, kapanış ve yeniden başlatma işlemlerini yönetir.

  • Bağlantılar dışında günlük temizlik ve sinyal işlemlerini de yönetir.


2. Backend Process (İstemci Bağlantı Süreci)


  • Kullanıcı veya uygulama PostgreSQL'e bağlandığında her bağlantı için ayrı bir backend süreci oluşturulur.

  • Bu süreçler, kullanıcı sorgularını analiz eder, yürütür ve sonuçları döner.

  • Bellek ve kaynak tüketimi bakımından önemlidir, çünkü çok sayıda istemci bağlanması süreç sayısını artırır.

  • İşlem süresi ve kaynak kullanımı, sunucu performansı üzerinde doğrudan etkili olur.


3. WAL Writer (Write-Ahead Logging Yazıcısı)


  • PostgreSQL’de veri bütünlüğünü sağlamak için Write-Ahead Logging mekanizması kullanılır.

  • WAL, yapılan tüm değişikliklerin öncelikle log dosyasına yazılmasını garanti eder.

  • WAL Writer, HALINDAKI bellek alanında (WAL tamponu) biriken log kayıtlarını disk üzerine periyodik aralıklarla yazar.

  • Böylece veri kaybı minimuma iner ve çökme durumunda veri kurtarma işlemleri kolaylaşır.

  • WAL dosyaları, replikasyon ve yedekleme işlemlerinde de önemli rol oynar.


4. Checkpoint Process


  • Checkpoint, veritabanını "temiz" bir duruma getirir.

  • WAL kayıtlarının ve veritabanı tamponundaki değişikliklerin tamamı diske yazılır.

  • Bu işlem, sistemin hızlı ve güvenilir bir şekilde çökmeden sonra verileri kurtarmasını sağlar.

  • Checkpoint işlemi sıklığı, veritabanı yapılandırmasına göre ayarlanabilir ve performansı etkiler.

  • Çok sık checkpoint ise I/O yükünü artırırken, çok seyrek checkpoint veri kurtarma süresini uzatır.


5. Background Writer (Arka Plan Yazıcısı)


  • Veritabanı tampon belleğinde (shared buffers) bulunan “dirty pages” (henüz diske yazılmamış değişiklikler) zaman içinde sisteme zarar vermemesi için diske yazılır.

  • Background Writer, kullanıcı sorgularını engellemeden bu işlemi yapar.

  • Böylece checkpoint esnasında yazılacak veri miktarı azalır, yoğunluk dengelenir.

  • Sistem kaynaklarını dengeli kullanarak performansın stabil kalmasına katkı sağlar.


6. Autovacuum Launcher ve Autovacuum Workers


  • PostgreSQL’de güncellenen veya silinen verilerin fiziksel olarak temizlenmesi gerekir çünkü MVCC (Multi-Version Concurrency Control) kullanılır.

  • Autovacuum launcher, arka planda çalışan ve tablolarda temizlik gerektiren noktaları tarayan ana süreçtir.

  • Autovacuum workerlar ise belirlenen tablolarda vacuum (veri temizliği) işlemini yapar.

  • Ayrıca tabloların istatistiklerini günceller; bu istatistikler sorgu planlayıcısının (planner) en iyi sorgu yolunu seçmesine yardımcı olur.

  • Autovacuum işlemi veritabanında gereksiz yer kaplamayı önler ve performansı korur.


7. Stats Collector (İstatistik Toplayıcı)


  • Sorguların ve işlemlerin performansına ilişkin verileri toplar.

  • İşlem sıklığı, bekleme süreleri, satır sayıları gibi değerler toplanır.

  • Bu veriler, sorgu planlayıcısı ve yönetim araçları tarafından kullanılır.

  • Yönetici için performans izleme ve sorun tespiti açısından oldukça değerlidir.


8. Logical Replication Launcher


  • Logical Replication işlemleri için bağlantılar kurar ve bu bağlantıları yönetir.

  • Veritabanı değişikliklerini başka bir veritabanına (örneğin yedek veya farklı coğrafi konumda bir veritabanına) aktarır.

  • Bu süreç, yüksek erişilebilirlik ve veri çoğaltma senaryolarında kritik göreve sahiptir.

  • Replikasyonun doğru ve güncel çalışmasını sağlar.


Arka Plan Süreçlerinin Veritabanı Performansına Katkıları


Sorgu Hızını Artırmadaki Rolleri


Autovacuum, ölü tuple'ları temizleyerek tablo şişmesini önler ve sorgu planlayıcısının daha doğru istatistiklerle çalışmasını sağlar. BGWriter ise sık kullanılan sayfaları önceden diske yazarak checkpoint anında yaşanabilecek ani yükü dağıtır. Bu sayede sorgular beklemek yerine veriyi hızlıca okuyabilir.


Sistem Kaynaklarının Verimli Kullanımı


Arka plan süreçleri, işleri küçük parçalara bölerek CPU ve disk I/O üzerindeki ani baskıyı azaltır.

Süreç

Kaynak Katkısı

BGWriter

Disk yazma yükünü dengeler

Autovacuum

RAM'de gereksiz veri birikmesini önler

Checkpointer

I/O darbelerini yumuşatır

WAL Writer

Log yazma işlemlerini toplu yapar


Veri Güvenliği ve Kurtarma Süreçlerine Destek


WAL Writer her işlemi sırayla diske kaydeder. Sistem çöktüğünde PostgreSQL bu kayıtları okuyarak veriyi son tutarlı noktaya geri getirir. Checkpointer düzenli aralıklarla bellek içeriğini diske aktarır; bu da kurtarma süresini ciddi ölçüde kısaltır. Archiver süreci ise WAL dosyalarını uzak bir konuma kopyalar, böylece felaket senaryolarında bile veri kaybı yaşanmaz.


Arka Plan Süreçlerini Konfigüre Etme, İzleme ve Yönetme


1. Konfigürasyon


PostgreSQL arka plan süreçlerinin davranışı genellikle postgresql.conf dosyası üzerinden ayarlanır. Önemli parametreler:

Wal Writer ve Checkpoint Ayarları

  • wal_writer_delay: WAL yazma aralığını (milisaniye) belirler. Varsayılan genelde 200ms’dir. Daha sık yazmak veri kaybını önler, ancak disk yükünü artırır.

  • checkpoint_timeout: Checkpoint aralığını (saniye) belirler. Varsayılan genellikle 5 dakika. Daha sık checkpoint performansı düşürebilir, az sıklık ise kurtarma süresini uzatır.

  • checkpoint_completion_target: Checkpoint işleminin hedef süresini belirler (örneğin 0.9, yani checkpoint süresinin %90’ı kadar). Bu, disk yükünü dengeler.


Background Writer

  • bgwriter_delay: Background Writer’ın çalışma frekansını kontrol eder.

  • bgwriter_lru_maxpages: Bir seferde diske yazacağı maksimum sayfa sayısı.


Autovacuum Ayarları

  • autovacuum: Autovacuum işlemlerini aktif veya pasif yapar.

  • autovacuum_naptime: Autovacuum işlemi tetiklenme sıklığını belirler (varsayılan 1 dakika).

  • autovacuum_vacuum_threshold ve autovacuum_analyze_threshold: Autovacuum’un ne zaman tetikleneceğini belirleyen eşik değerler.

  • autovacuum_vacuum_cost_limit ve autovacuum_vacuum_cost_delay: Autovacuum’un sistem üzerindeki kaynak kullanımını sınırlar.


Stats Collector

  • Bu süreç genelde otomatik çalışır, ancak istatistiklerin toplanma sıklığını stats_temp_directory gibi parametrelerle etkileyebilirsiniz.


2. İzleme ve Uyarılar


Arka plan süreçlerinin durumunu ve etkilerini izlemek için bazı araçlar ve SQL sorguları kullanılır:

  • pg_stat_activity: O an çalışan prosesleri ve sorguları gösterir.

  • pg_stat_bgwriter: Background Writer’ın etkinliği ve performans bilgileri.

  • pg_stat_all_tables: Tablo düzeyinde vacuum ve autovacuum istatistikleri.

  • pg_stat_replication: Replikasyon durumunu gösterir.


Örneğin; Background Writer aktivitelerini görmek için:

SELECT * FROM pg_stat_bgwriter;
  • Performans araçları (PgAdmin, pgBadger, Prometheus gibi) ile süreçlerin sağlığını sürekli izleyin.

  • Çökme ve gecikme uyarıları oluşturun.

  • Özel sorgu ve raporlarla autovacuum işlemlerinin verimliliğini kontrol edin.


3. Optimizasyon


WAL Yazıcı ve Checkpoint Optimizasyonu

  • Disk performansına göre wal_writer_delay ve checkpoint_timeout ayarlarını dengeleyin.

  • SSD varsa daha sık checkpoint yapabilirsiniz; HDD ise biraz daha seyrek yapmak avantajlı olabilir.

  • Checkpoint sırasında ani I/O yükünü azaltmak için checkpoint_completion_target değeri 0.7-0.9 arası ayarlanabilir.


Autovacuum Optimizasyonu

  • Çok büyük veya sık güncellenen tablolar için autovacuum parametrelerini tablo bazında özelleştirin.

  • autovacuum_vacuum_cost_delay ve autovacuum_vacuum_cost_limit ile sistem kaynaklarının aşırı kullanılmasını önleyin.

  • Vacuum ardından tablo istatistiklerinin güncel olmasına dikkat edin; eksik analiz sorgu planlarını kötü etkiler.


Background Writer Ayarları

  • Düşük RAM ve yoğun işlemde background writer’ın disk yazma sıklığını artırarak tamponların dolmasını engelleyin.

  • Fazla agresif ayar CPU ve disk kaynaklarını zorlayabilir, denge sağlamak önemli.


Sonuç


PostgreSQL arka plan çalışan süreçleri, veritabanının sorunsuz çalışmasını sağlayan sessiz kahramanlardır. Autovacuum'dan WAL writer'a kadar her biri belirli bir görevi üstlenir ve bu süreçlerin bir arada nasıl çalıştığını anlamak, veritabanı yönetimini çok daha kolay hale getirir. Kendi özel arka plan süreçlerinizi oluşturabilir, mevcut süreçleri izleyebilir ve gerektiğinde müdahale edebilirsiniz.


Veritabanınızın performansını bir üst seviyeye taşımak istiyorsanız, bu süreçleri yakından takip etmek iyi bir başlangıç noktasıdır. pg_stat_activity gibi araçları düzenli olarak kontrol edin, anormal davranışları erkenden fark edin ve sisteminizi ihtiyaçlarınıza göre yapılandırın. Sonuç olarak, arka plan süreçlerini ne kadar iyi tanırsanız, PostgreSQL'den o kadar verimli bir şekilde yararlanırsınız.

bottom of page