Langsung ke konten

Arsip

PostgreSQL

4 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.

Basis Data 15 Sep 2026 5 min read

PostgreSQL Full Page Writes Memperbaiki Torn Page

Sebuah data page PostgreSQL dapat lebih besar daripada unit write atomik yang disediakan storage. Jika host gagal ketika sebuah page sedang ditulis, sebagian page tersebut dapat mencapai durable storage sementara bagian lain masih berasal dari versi yang lebih lama. Recovery tidak dapat dengan aman menerapkan change record biasa ke page yang struktur internalnya mungkin sudah tidak konsisten. full_page_writes menangani mode kegagalan tersebut. Ketika setting ini diaktifkan, PostgreSQL mencatat image lengkap sebuah page ke write-ahead log (WAL) pada modifikasi pertama page tersebut setelah checkpoint. Selama crash recovery, image itu dapat menggantikan on-disk page yang torn sebelum WAL record berikutnya di-replay.

Basis Data 14 Sep 2026 4 min read

Partial Index PostgreSQL Memfokuskan Entri Indeks

Indeks PostgreSQL tidak harus merepresentasikan setiap baris dalam tabelnya. Partial index menambahkan predikat ke definisi indeks, sehingga hanya baris yang memenuhi predikat tersebut yang memperoleh entri indeks. Hal ini mengubah cakupan fisik indeks sekaligus kumpulan query yang dapat menggunakan indeks tersebut melalui planner. Mekanisme ini cocok untuk workload ketika subset baris yang stabil menerima porsi query yang jauh lebih besar. Aplikasi mungkin berulang kali memeriksa job yang masih pending sementara job yang selesai sebagian besar hanya menjadi riwayat, atau melakukan query pada akun aktif sementara akun yang dinonaktifkan tetap berada dalam tabel yang sama.