Postgresql Veri Tabanı Datafile Yapısı
Postgresql’de data file’lar 8KB’lık blocklara bölünür(pages). Ve bu blokların 0’dan başlayan sıralı bir numarası bulunur.
- Heap tuple heap tablosundaki kayıtlardır. Yazılmaya sayfanın altından başlanır.
- Line pointer 4byte long bir id değeridir. Ve her heap tuple için bir tane pointer bulunur. Heap tuple’lar için index görevi görürler. Page’e yeni bir tuple eklendiğinde yeni bir pointer da eklenir.
- Header Data ise her page’in başında yer alan 24 byte’lık alandır ve page hakkında tanımlayıcı bilgileri tutar.
- Pd_lsn: Bu alanda WAL kayıtlarında bu pagede en son değişiklik yapan kaydın bilgisi tutulur. 8byte’tır.
- Pd_checksum : Bu alanda page’in checksum değeri tutulur.
- Pd_lower/Pd_upper : pd_lower line pointer’ın bittiği yeri işaret eder.Pd_newest ise en yeni heap tupple’ın yerini işaret eder.
- Pd_special : bu değişken indexler içindir.
NOT : Line pointerdan sonra, en yeni tuple’ın başına kadar olan boş alan free space veya hole olarak isimlendirilir. Bir tabloda tuple’I belirlemek için TID – tuple identifier değeri kullanılır.
Tuple Yazma ve Okuma işlemleri
Yalnızca 1 tuplde’dan oluşan bir page’i olan bir tablo üzerinde pd_lower ilk pointer’ı işaret eder.Ve pointer ile pd_upper değerleri ise var olan Tuple 1’i işaret eder.
İkinci tuple’ın eklenmesi sırasında;
Tuple2, page’de Tuple1’in hemen arkasına yazılır.
İkinci bir pointer satırı eklenerek Tuple2’yi işaret eder.
Pd_lower değeri pointer’ın ikinci satırını işaret eder.
Pd_upper değeri ise Tuple2’yi işaret eder.
Ve page’in header bilgisi güncellenir.(Pd_lsn,Pd_checksum)
Okuma işlemi sırasında ise Sequential scan ve B-tree Index scan olmak üzre 2 farklı yol vardır.
Sequential scan işleminde bütün sayfalarda yer alan bütün tuple’lar line pointer’lar aracılığı ile tek tek sıralı bir şekilde okunur.
B-tree Index Scan işlemi sırasında ise;
Index dosyaları TID ve index key değerinden oluşan Index Tuple’larından oluşur. Index dosyalarında eğer aranan index key değeri bulunur ise ona bağlı TID değeri okunarak direkt olarak ilgili Page ve Tuple’a gidilerek sonuç getirilir.
- AWS nedir? – Cloud 101 - Mayıs 16, 2024
- Vector Databases - Mayıs 15, 2024
- Data Dünyası Nereye Gidiyor? - Mayıs 8, 2024