Langsung ke konten

Arsip

MVCC

2 artikel
Basis Data 16 Sep 2026 5 min read

Truncasi Tail PostgreSQL VACUUM Memerlukan Lock Eksklusif

VACUUM biasa pada PostgreSQL umumnya membiarkan ruang heap yang telah direklamasi tetap berada di dalam relation agar dapat digunakan kembali. Fase tail truncation yang terpisah dapat memperpendek file relation ketika terdapat rangkaian halaman kosong yang berurutan pada ujung fisiknya. Fase tersebut memerlukan lock ACCESS EXCLUSIVE. Batas lock ini membuat tail truncation berbeda secara material dari pembersihan vacuum biasa. Pemeliharaan heap dan index rutin dirancang agar dapat berjalan berdampingan dengan operasi baca dan tulis normal, sedangkan memperpendek relation secara fisik memerlukan periode singkat ketika akses tabel secara bersamaan tidak dapat berlangsung.

Basis Data 15 Sep 2026 5 min read

PostgreSQL Visibility Map Melacak Status Heap Page

PostgreSQL menyimpan metadata visibility tuple di row heap, tetapi memeriksa setiap tuple heap tidak diperlukan ketika seluruh page sudah diketahui memenuhi kondisi yang lebih kuat. Visibility map menyimpan status tingkat page tersebut dalam relation fork yang ringkas. Setiap heap page memiliki dua bit yang bersesuaian. Bit all-visible mencatat bahwa setiap tuple pada page terlihat oleh setiap transaksi saat ini dan mendatang. Bit all-frozen mencatat bahwa setiap tuple pada page telah dibekukan. Fakta tersebut memungkinkan PostgreSQL menghindari pekerjaan dalam index-only scan dan operasi vacuum tanpa memindahkan data visibility MVCC ke dalam index.