PostgreSQL Mimarisi

 

PostgreSQL in çalışma mantığına geçmeden önce genel veritabanı çalışma mantıklarını kısaca anlatmak istiyorum.


Kullanıcıda veritabanına sorgu gönderdiğinde  ilk başta kimlik doğrulması yapılır sonra bundan başarılı şekilde geçilirse diğer bir sekmeye memory e bakılır eğer burada data yoksa disk’e gidilir ve oradan data çekilir. Bu çekilen data ilk başta  memory e alınır ve sonra kullanıcıya geri dönüş olur. Eğer aynı veri bir daha sorgulanmak isterse bu sefer disk e gidilmeden direk memory den çekilecektir.

PostgreSQL tek cluster tarafından yönetilir ve bunların altında birden fazla veritabanı ve bunlara bağlı nesnelerden oluşmaktadır ve buna cluster denir.Postgresqle ait terimlerde bahsetmiştim.

Postmaster sürecinden sonra aşağıdaki işlemler gerçekleşir. Bunları daha ayrıntılı anlatarak detaylarda boğmayacağım sadece çalışan proseslerin ne iş yaptığından kısaca bahsedeceğim.

Shared Memory

Shared Memory içerisinde database cach için  ve transaction log cach’ler için mekanizması bulunmaktadır.

Shared Buffers ve Wal Buffers önemlidir.

Shared Buffer’ın önemi
Disk IO sunu minimalize eder.
Sık kullanılan page’ler    burada tutulur. Page  veritabanlarının en ufak yapı taşıdır. Veriler 8 kb ‘lık dosyalardan oluşur.

Büyük verilere daha hızlı erişmenizi sağlar.

WAL Buffer

Değişiklikleri veritabanında geçici olarak saklayan arabellektir.
WAL Buffer da bulunan veriler belirlenen periyodlarla Wal dosyalarına yazılır.

PostgreSQL in 4  Ana Processi vardır.

Bunlar

1)Postmaster Proceses

2)Background proceses

3)Backend proceses

4)Client proceses

 


Postmaster Process

Postgresql in  ana merkezi postmaster’dır. Peki bu postmaster ne yapar?

Postgresql kurulduğunda başlar ve istemcilerin ,yazılımcıların,kullanıcıların yani postgresql e bağlanmak isteyenlerin bağlantı isteklerini kabul eder. Kullanıcı sorgu göndererek bağlanmak ister fakat burda da devreye kimlik doğrulaması (authentication ) ve yetkilendirme (authorization) devreye girer ve buradan başarılı bir şekilde geçilirse  postmaster  süreci başlar.

Başlamaz ise kullanıcıya postmaster diğer proceseslere geçmeden kullanıcının istediğini sonlandırır.

Postmaster tüm süreçlerini resimdeki gibi pstree -p 1125(prosesid’sini yazarak görebiliriz.

  1. Background  proseslerini anlatacak olursak

 

Logger : Hata mesajlarını log a yazar.

Checkpointer:  checkpoint oluştuğunda kirli dataları yani dirty bufferlar’ı diske yazar .

bgWriter: arc olgoritmasını kullanarak  buffer daki pageler için yer açar

Wal writer:  WAL bufferdakileri  wal’e yazar.

Autovacum : Autovacum özelliği enable edildiyse vacuma ihtiyacı olan verilerin vacum yapılmasını üstlenen processtir.

Archiver : Archive_mode= on seçildiyse eğer  belirtilen klasöre wal dosyalarını kopyalar.

Stat_collecter: Tablo,index yada bloklar tarafından kullanılan istatistikleri toplar.

2. Backend Proceses:

Maksimim backend process işlem sayısı max connection parametresi ile belirlenir.Backend  proceses kullanıcı işleminin sorgu isteğini gerçekleştir ve sonucu iletir.
3.Client proceses

Postmaster işlemi için kullanıcı bağlantısına hizmet etmek için atanmış processesdir.

 

Loading