VACUUM
Berlaku untuk: Databricks SQL
Databricks Runtime
Hapus file yang tidak digunakan dari direktori tabel.
Catatan
Perintah ini bekerja secara berbeda tergantung pada apakah Anda sedang mengerjakan tabel Delta atau Apache Spark.
Bersihkan tabel Delta
Direktori vakum secara rekursif terkait dengan tabel Delta. Untuk detail dan batasan lengkap, lihat Menghapus file data yang tidak digunakan dengan vakum.
VACUUM
menghapus semua file dari direktori tabel yang tidak dikelola oleh Delta, serta file data yang tidak lagi dalam status terakhir log transaksi untuk tabel dan lebih lama dari ambang batas retensi.
VACUUM
akan melewati semua direktori yang dimulai dengan garis bawah (_
), yang mencakup _delta_log
. Mempartisi tabel Anda pada kolom yang dimulai dengan garis bawah merupakan pengecualian untuk aturan ini; VACUUM
memindai semua partisi valid yang disertakan dalam tabel Delta target. File data tabel Delta dihapus sesuai dengan waktu file tersebut telah dihapus secara logis dari log transaksi Delta ditambah jam retensi, bukan stempel waktu modifikasinya pada sistem penyimpanan. Ambang batas default adalah 7.
Pada tabel Delta, Azure Databricks tidak secara otomatis memicu VACUUM
operasi.
Jika Anda menjalankan VACUUM
di tabel Delta, Anda kehilangan kemampuan untuk perjalanan waktu kembali ke versi yang lebih lama dari periode retensi data yang ditentukan.
Peringatan
Direkomendasikan agar Anda menetapkan interval retensi menjadi setidaknya 7 hari, karena snapshot lama dan file yang tidak diterapkan masih dapat digunakan oleh pembaca atau penulis tabel secara bersamaan. Jika VACUUM
menghapus file aktif, pembaca dapat mengalami kegagalan secara serentak atau, lebih buruk lagi, tabel dapat menjadi rusak saat VACUUM
menghapus file yang belum diterapkan. Anda harus memilih interval yang lebih lama dari transaksi serentak yang berjalan dengan waktu terlama dan periode terlama di mana aliran apa pun dapat tertinggal dari pembaruan tabel terbaru.
Delta Lake memiliki pemeriksaan keamanan untuk mencegah Anda menjalankan perintah berbahaya VACUUM
. Dalam Databricks Runtime, Anda yakin bahwa tidak ada operasi yang dilakukan pada tabel ini yang membutuhkan waktu lebih lama dari interval retensi yang Anda rencanakan untuk ditentukan, Anda dapat menonaktifkan pemeriksaan keamanan ini dengan mengatur properti spark.databricks.delta.retentionDurationCheck.enabled
konfigurasi Spark ke false
.
VACUUM table_name { { FULL | LITE } | RETAIN num HOURS | DRY RUN } [...]
Dalam Databricks Runtime 16.0 dan versi sebelumnya, RETAIN num HOURS
harus mendahului DRY RUN
dalam sintaks.
Penting
Jendela retensi untuk perintah VACUUM
ditentukan oleh properti tabel delta.deletedFileRetentionDuration
, yang defaultnya menjadi 7 hari.
Ini berarti VACUUM
menghapus file data yang tidak lagi dirujuk oleh versi tabel Delta dalam 7 hari terakhir.
Untuk menyimpan data dalam jangka waktu yang lebih lama, seperti mendukung perjalanan waktu untuk durasi yang lebih lama, atur properti tabel ini ke nilai yang lebih tinggi.
Contoh berikut menunjukkan pengaturan ambang batas ini menjadi 30 hari:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
Parameter-parameternya
-
Mengidentifikasi tabel Delta yang sudah ada. Nama tidak boleh menyertakan spesifikasi temporal atau spesifikasi opsi.
RETAIN num HOURS
Ambang batas retensi.
DRY RUN
Menampilkan daftar hingga 1000 file yang akan dihapus.
FULL
atauLITE
Berlaku untuk:
Databricks SQL
Databricks Runtime 16.1 dan yang lebih baru
FULL
menjalankan operasi vakum dalam mode Penuh. Ini menghapus file data di luar durasi retensi dan semua file dalam direktori tabel yang tidak direferensikan oleh tabel.LITE
menjalankan operasi vakum Lite di mode. Alih-alih menemukan semua file dalam direktori tabel,VACUUM
menggunakan log transaksi Delta untuk mengidentifikasi dan menghapus file yang tidak lagi direferensikan oleh versi tabel apa pun dalam durasi retensi. JikaVACUUM LITE
tidak dapat diselesaikan karena log Delta telah dipangkas, sehingga pengecualian DELTA_CANNOT_VACUUM_LITE dikeluarkan.Defaultnya adalah
FULL
.
Vakum tabel non-Delta
Secara rekursif menyedot debu direktori yang terkait dengan tabel non-Delta dan menghapus file yang tidak dikomit yang lebih lama dari ambang retensi. Ambang batas default adalah 7.
Pada tabel non-Delta, Azure Databricks secara otomatis memicu VACUUM
operasi saat data ditulis.
Sintaks
VACUUM table_name [RETAIN num HOURS]
Parameter-parameternya
-
Mengidentifikasi tabel yang sudah ada berdasarkan nama atau jalur.
RETAIN num HOURS
Ambang batas retensi.