All Products
Search
Document Center

PolarDB:Mekanisme garbage collection

Last Updated:Mar 28, 2026

PolarDB for PostgreSQL (Compatible with Oracle) menggunakan VACUUM untuk mereklaim ruang penyimpanan yang ditempati oleh dead tuple. Ruang penyimpanan yang telah direklaim tidak dikembalikan ke sistem operasi, melainkan tetap tersedia untuk digunakan kembali oleh baris baru yang dimasukkan atau diperbarui dalam tabel yang sama.

Garbage collection mechanism

Dalam diagram tersebut, tuple1 dan tuple2 adalah baris yang valid, sedangkan unused merepresentasikan baris yang tidak valid (dead tuple). Setelah garbage collection, ruang yang ditempati oleh dead tuple dilepaskan dan dapat digunakan kembali.

Cara kerja

PolarDB for PostgreSQL (Compatible with Oracle) menerapkan multiversion concurrency control (MVCC) dengan mempertahankan beberapa versi baris. Setiap operasi UPDATE atau DELETE membuat versi baris baru dan menandai versi sebelumnya sebagai tidak valid. Versi-versi yang tidak valid ini—yaitu dead tuple—terakumulasi di dalam blok data dan harus direklaim secara berkala. Jika tidak dibersihkan tepat waktu, dead tuple menyebabkan pembengkakan tabel (table bloat).

Garbage collection dipicu secara otomatis ketika jumlah dead tuple melebihi ambang batas yang dihitung:

autovacuum threshold = autovacuum_vacuum_scale_factor * total_rows + autovacuum_vacuum_threshold

Sebagai contoh, dengan pengaturan default (autovacuum_vacuum_scale_factor = 0.2, autovacuum_vacuum_threshold = 50), sebuah tabel dengan 100 baris akan memicu autovacuum ketika jumlah dead tuple melebihi 70 (0.2 * 100 + 50). Kedua parameter tersebut dapat dikonfigurasi.

VACUUM berjalan di latar belakang dan tidak menghalangi operasi baca atau tulis secara konkuren. Untuk memicu garbage collection segera pada tabel tertentu, jalankan perintah berikut:

VACUUM <table_name>;