PostgreSQL-in əsasları
PostgreSQL verilənlər bazası üçün relational modeldən istifadə edən və SQL standart sorğu dilini dəstəkləyən verilənlər bazası idarəetmə sistemidir. Oracle ilə oxşarlığına görə, yüksək lisenziya xərclərinin qarşısını almaq və eyni funksiyanı eyni performansla yerinə yetirmək kimi səbəblərdən son zamanlarda tez-tez üstünlük verilir. Çünki PostgreSQL pulsuz və açıq mənbəli proqramdır. PostgreSQL həm də yaxşı performans təmin edən, təhlükəsiz və geniş funksiyalara malik verilənlər bazası idarəetmə sistemidir. Demək olar ki, bütün UNIX və ya Unix-dən törəmə əməliyyat sistemlərində (məsələn, Linux, FreeBSD) işləyir. O, həmçinin NT nüvəli bütün Windows sistemlərində işlədilə bilər.
PostgreSQL-in quruluşu
PostgreSQL-in fiziki strukturu başa düşüləndir. Paylaşılan yaddaş fon proseslərindən və məlumat fayllarından ibarətdir. Aşağıdakı kimi bir arxitekturaya malikdir.
Shard Bufer verilənlər bazası keşi və əməliyyat jurnalının keşi üçün yaddaşdan yer ayırır. Ən vacib elementlər paylaşılan bufer və wal buferdir.
Shard Bufer: Shard Buferin məqsədi diskin giriş/çıxışını azaltmaqdır. Bu məqsədlə aşağıdakıları etmək məqsədəuyğundur;
· Çox böyük buferlərə tez daxil olmağımız gözlənilir. (100 GB və daha çox)
· Bir çox istifadəçi eyni anda daxil olmaq istədikdə mübahisənin (rəqabət) minimuma endirilməsi gözlənilir.
· Tez-tez istifadə olunan bloklar mümkün qədər buferdə qalmalıdır.
Sorğu daxil olduqda, ilk olaraq bu sorğunun nəticəsi burada axtarılır. Əgər burada deyilsə; O, diskə keçir, diskdən məlumatları götürür və bu blokları paylaşılan buferə yazdıqdan sonra nəticə müştəriyə qaytarılır.
Wal Bufer: Wal buferi əməliyyat məlumatlarının müvəqqəti saxlandığı yerdir. Insert, update və s. gəlsə, burada məlumat yazılır. Siz WAL konsepsiyasını Oracle-da redo log kimi düşünə bilərsiniz.
PostgreSQL Process Types
4 müxtəlif prosesdən ibarətdir. Bunlar; Bunlar Postmaster (Daemon), Fon, Backend və cilent Prosesləridir.
· Postmaster Prosesi: Bu proses PostgreSql işə salındıqda işləyən ilk prosesdir. Başlanğıcda o, bərpanı həyata keçirir, paylaşılan yaddaşdan yer ayırır və fon proseslərinə başlayır.
Sorğu daxil olduqda, postmaster bir postgres açar.
· Background Process : 7 kommunal prosesdən ibarətdir. Və onlar Postgresql işə salınan andan avtomatik işləyirlər.
· Background Writer : Diskə paylaşılan buferdəki dirty tuple’ları yazan prosesdir.
· Wal Writer: Wal buferindəki məlumatları Wal fayllarına yazır.
· Checkpoint: Checkpoint işə salındıqda diskə çirkli bufer yazılır.
· Autovacuum launcher: Vakum prosesinin standart olaraq arxa planda avtomatik işləməsinə imkan verən prosesdir.
Vakuumun nə olduğunu soruşanlar üçün qeyd: Postgresql-də siz əslində hər yeniləmə əməliyyatında əlavə edirsiniz. Və ya silmə əməliyyatlarında həmin sıra fiziki olaraq silinmir. Sadəcə görünməz olur. Biz buna dirty tuple deyirik və onları həmişəlik silmək üçün vakuum işlətməliyik. 🙂
Logging Collector: SQL səhvlərini və verilənlər bazası xətalarını toplayan və onları log fayllarına yazan prosesdir.
Stats Collector: Bu, vakuum analizindən sonra statistik məlumatları yeniləyən prosesdir.
Archiver Process : Archive_mode = on aktivdirsə, bu, müəyyən edilmiş metodla valları arxivləşdirən prosesdir. Defolt olaraq deaktivdir.
Backend Prosesi: İstifadəçinin sorğu tələbini yerinə yetirir və sonra nəticəni çatdırır. Aşağıdakı 3 parametrlə sorğu işləyərkən tələb olunan yerli yaddaş sahəsinə nəzarət edə bilərik.
+ work_mem : Hash, join, merge kimi alqoritmlərin çeşidlənməsi üçün tələb olunur
maintananence_work_mem: Bu, DDL əməliyyatları, indeks əməliyyatları və vakuum əməliyyatları üçün tələb olunan yaddaş sahəsidir.
+ temp_buffer: Bu müvəqqəti cədvəllər üçün istifadə ediləcək yaddaş sahəsidir.
Client Process: Hər bir istifadəçi bağlantısı üçün açılır