Database

PostgreSQL TOAST

PostgreSQL verilənlər bazası güclü və elastik xüsusiyyətləri ilə tanınır. Böyük verilərin saxlanması və idarə edilməsi PostgreSQL-in əsas üstünlüklərindən biridir. Standart PostgreSQL səhifə ölçüsü 8KB olduğu üçün, böyük mətn və ya ikili obyektlərin (BLOB) bu limit daxilində saxlanması çətin ola bilər. Məhz bu problemi həll etmək üçün PostgreSQL TOAST (The Oversized-Attribute Storage Technique) mexanizmini təqdim edir.

TOAST nədir?
TOAST, PostgreSQL-in çox böyük veriləri avtomatik olaraq sıxışdırıb (compression) ayrıca bir cədvəldə saxlamasına imkan verən texnikadır. Bu, əsas cədvəlin səhifələrini (pages) həddindən artıq böyütmədən performansın yüksək səviyyədə qalmasını təmin edir.

TOAST-un əsas məqsədinə baxaq

  • Böyük veriləri səmərəli idarə etmək
  • Performansı qorumaq və səhifə limitlərini aşmadan veriləri saxlamaq
  • Lazım olduqda veriləri sıxışdırmaq və parçalamaq (chunking)

TOAST necə işlədiyinə birgə nəzər salaq

PostgreSQL hər bir cədvəl üçün maksimum səhifə ölçüsünü 8KB olaraq təyin edir. Əgər bir sütunun dəyəri bu həddi keçərsə, PostgreSQL avtomatik olaraq TOAST mexanizmini işə salır və aşağıdakı addımları həyata keçirir

1.Verilərin sıxışdırılması (Compression)

  • PostgreSQL PGLZ sıxışdırma alqoritmindən istifadə edərək böyük veriləri sıxışdırır.
  • Məsələn, böyük bir mətn sütunu saxlanmazdan əvvəl sıxışdırılaraq diskdə daha az yer tutması təmin edilir.

2.Verilərin TOAST cədvəlinə köçürülməsi (External Storage)

  • Əgər sıxışdırma yetərli olmasa və məlumat hələ də səhifə limitindən böyükdürsə, PostgreSQL həmin veriləri ayrı bir TOAST cədvəlində saxlayır.
  • TOAST cədvəli PostgreSQL-in pg_toast sxemində yerləşir.

3.Parçalama (Chunking)

  • PostgreSQL, böyük veriləri kiçik hissələrə (chunks) bölərək TOAST cədvəlində saxlayır.
  • Hər bir hissə maksimum səhifə ölçüsündən (8KB) kiçik olur ki, saxlanma optimallaşdırılsın.

TOAST mexanizmi əsasən aşağıdakı data tipləri üçün işləyir.

TEXT, VARCHAR (uzun mətn məlumatları üçün)
BYTEA (ikili obyektlər, məsələn, şəkillər və videolar üçün)
JSON, JSONB (böyük JSON obyektləri üçün)
ARRAY (böyük massivlər üçün)

TOAST-un faydalarına birgə baxaq
✅ Disk istifadəsinin optimallaşdırılması: Sıxışdırma və TOAST cədvəlləri sayəsində diskdə daha az yer tutulur.
✅ Verilənlər səhifə ölçüsünü keçsə də saxlanılır: PostgreSQL səhifə limiti (8KB) aşılarsa, məlumatlar TOAST cədvəlində parçalanaraq saxlanır.
✅ Performansın yaxşılaşdırılması: Cədvəllər daha yığcam olur, bu da oxuma və yazma əməliyyatlarının daha səmərəli aparılmasını təmin edir.
✅ Böyük obyektlər üçün avtomatik idarəetmə: İstifadəçi TOAST-u əl ilə idarə etməyə ehtiyac duymur, PostgreSQL bunu avtomatik həyata keçirir.

 

TOAST haqqında əlavə məlumatları necə əldə etmək olar?

PostgreSQL-də TOAST cədvəli haqqında məlumat almaq üçün aşağıdakı SQL sorğusundan istifadə edə bilərsiniz.Əgər reltoastrelid sütununda bir dəyər varsa, deməli, cədvəliniz üçün TOAST cədvəli mövcuddur.

SELECT relname, reltoastrelid 
FROM pg_class 
WHERE relname = 'sizin_cedvel';

 

SELECT * FROM pg_toast.pg_toast_XXXXXX;

Burada XXXXXX cədvəlinizin reltoastrelid dəyəridir.

TOAST-un məhdudiyyətləri və alternativlərinə baxaq

  • TOAST yalnız TOASTABLE verilən tipləri üçün işləyir. Bəzi xüsusi verilən tiplərində bu mexanizm aktiv olmaya bilər.
  • Əgər çox böyük məlumatlarla işləyirsinizsə və TOAST yetərli deyilsə, LOB (Large Object) mexanizmindən istifadə edə bilərsiniz.
  • TOAST cədvəlləri indeksləşdirilə bilməz, çünki onlar avtomatik idarə olunan obyektlərdir.

PostgreSQL-in TOAST mexanizmi böyük ölçülü veriləri effektiv şəkildə saxlamaq üçün ideal həll yoludur. Avtomatik sıxışdırma və parçalama texnikası sayəsində, PostgreSQL böyük sütun dəyərlərini əsas cədvəllərin səhifələrini həddindən artıq doldurmadan idarə edə bilir. TOAST sayəsində PostgreSQL, böyük mətnlər, JSON obyektləri və ikili verilərlə (BYTEA) səmərəli işləyə bilir.

Əgər PostgreSQL-də böyük verilərlə işləyirsinizsə, TOAST-un necə işlədiyini başa düşmək sistemin optimallaşdırılması baxımından çox faydalıdır.

Related Articles

Bir cavab yazın

Sizin e-poçt ünvanınız dərc edilməyəcəkdir. Gərəkli sahələr * ilə işarələnmişdir

Back to top button