Postgresql Mimarisi
Postgresql’in mimarisi 3 ana yapıdan oluşur;
- Memory (hafıza)
- Proses
- Depolama yapısı (Storage Structure)

Postgresql Instance; Background prosesesler, yardımcı prosesler ve shared buffer
(paylaşılmış hafıza/memory) alanından oluşur.
Instance’ı postmaster prosesi yönetir. Bir instance sadece bir database cluster’ı ve
bünyesindeki database’ leri yönetebilir (Storage konusunda, cluster kavramı ayrıntılı
anlatılmıştır.).
Farklı TCP portlarda olmak şartı ile aynı sunucu üzerinde aynı anda birden fazla instance
çalışabilir.
Okuma/yazma (I/O), ACID şartlarının sağlanması, client proseslerin bağlanması,
hak kontrolü, kurtarma/düzeltme (recovery), replikasyon vb. tüm görevler instance
üzerindedir.systemctl ile ya da pg_ctlcluster (pg_cluster) ile veritabanı başlatıldığında,
konfigurasyon dosyasındaki memory ayarlarına göre işletim sisteminden hafızayı
(memory) alıp prosesleri başlatır ve istemcilerin (client) erişimine hazır hale gelir.
Instance kapalı iken; root@srv2:~# ps f -upostgres root@srv2:~# top -u postgres PID TTY STAT TIME COMMAND top - 19:19:21 up 6:45, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 75 total, 1 running, 74 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.7 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi,0.0 si, 0.0 st MiB Mem : 1995.4 total, 1601.4 free, 107.2 used, 286.8 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1718.0 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
ve ps f -upostgrestop -u postgres
ile izlendiğinde herhangi bir postgresql prosesi veya postgres kullanıcısı görünmüyor.
Instance açılır: # root kullanıcısı ile ya da sudo yetkisi olan bir kullanıcı ile başına “ sudo ” ekleyerek; systemctl start postgresql # logu izleyelim, log dosyasının ismi sizde farklı olabilir “ls-ltr ” ile sıralayıp en güncel olanı kullanabilirsiniz. tail -f /var/log/postgresql/postgresql-13-main.log
Açılırken düşen logları görülür.
# Diğer instance /pg/13.4/bin/pg_ctl -D /pgdata/13.4 -l pg_$DATE.log start postgres@srv2:~$ ps f -upostgres /pg/13.4/bin/postgres -D /pgdata/13.4 \_ postgres: checkpointer \_ postgres: background writer \_ postgres: walwriter \_ postgres: autovacuum launcher \_ postgres: stats collector \_ postgres: logical replication launcher
Tekrar ps f -upostgres ve top -u postgres çalıştırdığımızda, prosesler
açılıp, işletim sisteminden hafızayı (memory) aldığını yani kaynak kullandığı görülür.
Postgresql’e Bağlantı

Daemon prosesi, istemcilerden (client) gelen bağlantı taleplerini dinler ve her gelen
bağlantı talebi için server/backend prosesi oluşturur. Daemon proses çalışmadığında
network üzerinden bağlantı yapılamaz.
İstemci (client) bağlantı isteği gönderdiğinde daemon prosesi bu isteği karşılayıp,
backend proses oluşturur. Backend prosesi de kimlik doğrulamasını yaptıktan sonra
istemciden (client) gelen sorgulama veri girişi/güncelleme vb. işlemlerini yerine getirir.
Backend prosesi kullanıcının ajanı (agent) olarak görev yapar.
Her gelen bağlantı talebi için bu işlemler tekrarlanır ve bağlantı sayısınca server/
backend proses oluşturulur ta ki max_connection limitine kadar.
Not: Ofisinizde iki departman arasında dahili hat olması bağlantının (connection) var
olduğunu gösterir. Ne zaman biri diğerini arar ve karşı taraf açıp görüşmeyi başlatırsa
oturum (session) başlatılmış olur.

Kullanıcılar veritabanına bağlandığında, genellikle veri okumak (select) ya da yazmak
(DML=insert/update/delete) ister. Tabloya kolon/index ekleme gibi işlemlere
genelde yazılım geliştiriciler ihtiyaç duyar.
Aynı kullanıcı ile aynı anda çoklu bağlantı yapılabilir.
