Bagikan melalui


VACUUM

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya 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

  • table_name

    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 atau LITE

    Berlaku untuk:dicentang ya Databricks SQL dicentang ya 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. Jika VACUUM 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

  • table_name

    Mengidentifikasi tabel yang sudah ada berdasarkan nama atau jalur.

  • RETAIN num HOURS

    Ambang batas retensi.