Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pengoptimalan prediktif secara otomatis berjalan VACUUM pada tabel terkelola Unity Catalog. Databricks merekomendasikan untuk mengaktifkan pengoptimalan prediktif untuk semua tabel terkelola Unity Catalog untuk menyederhanakan pemeliharaan data dan mengurangi biaya penyimpanan. Lihat Optimasi prediktif untuk tabel yang dikelola oleh Unity Catalog.
Hapus file data yang tidak lagi direferensikan oleh tabel yang lebih lama dari ambang retensi dengan menjalankan VACUUM perintah pada tabel. Menjalankan VACUUM secara teratur penting untuk biaya operasional dan kepatuhan hukum berdasarkan pertimbangan-pertimbangan berikut ini:
- Menghapus file data yang tidak digunakan mengurangi biaya penyimpanan cloud.
- File data yang dihapus dengan
VACUUMmungkin berisi rekaman yang telah dimodifikasi atau dihapus. Menghapus file-file ini secara permanen dari penyimpanan cloud memastikan rekaman ini tidak lagi dapat diakses.
Peringatan dan Pembatasan untuk Teknologi Vakum
Ambang retensi default untuk file data setelah berjalan VACUUM adalah 7 hari. Untuk mengubah perilaku ini, lihat Mengonfigurasi retensi data untuk kueri perjalanan waktu.
VACUUM mungkin meninggalkan direktori kosong setelah menghapus semua file dari dalamnya. Operasi berikutnya VACUUM menghapus direktori kosong ini.
Databricks merekomendasikan penggunaan pengoptimalan prediktif untuk menjalankan VACUUM tabel secara otomatis. Lihat Optimasi prediktif untuk tabel yang dikelola oleh Unity Catalog.
Beberapa fitur tabel menggunakan file metadata untuk menandai data sebagai dihapus daripada menulis ulang file data. Gunakan REORG TABLE ... APPLY (PURGE) untuk menerapkan penghapusan ini dan menulis ulang file data. Lihat Penghapusan metadata saja untuk memaksa penulisan ulang data.
Penting
- Dalam Databricks Runtime 13.3 LTS ke atas,
VACUUMsemantik untuk kloning dangkal dengan tabel terkelola Unity Catalog berbeda dengan tabel lainnya. Lihat MenggunakanVACUUMdengan klon dangkal pada Unity Catalog. -
VACUUMmenghapus semua file dari direktori yang tidak dikelola oleh Azure Databricks, mengabaikan direktori yang dimulai dengan_atau.. Jika Anda menyimpan metadata tambahan seperti titik pemeriksaan Streaming Terstruktur dalam direktori tabel, gunakan nama direktori seperti_checkpoints.- Data untuk umpan data perubahan dikelola di
_change_datadirektori dan dihapus denganVACUUM. Lihat Gunakan umpan data perubahan Delta Lake pada Azure Databricks. - Indeks filter Bloom yang tidak digunakan lagi menggunakan direktori
_delta_index.VACUUMmembersihkan file dalam direktori ini. Lihat Indeks filter Bloom (tidak digunakan lagi).
- Data untuk umpan data perubahan dikelola di
- Kemampuan untuk mengkueri versi tabel yang lebih lama dari periode retensi hilang setelah menjalankan
VACUUM. - File log dihapus secara otomatis dan asinkron setelah operasi titik pemeriksaan dan tidak diatur oleh
VACUUM. Meskipun periode retensi default file log adalah 30 hari, berjalanVACUUMpada tabel akan menghapus file data yang diperlukan untuk perjalanan waktu.
Catatan
Saat penyimpanan cache disk diaktifkan, kluster mungkin berisi data dari file Parquet yang telah dihapus dengan VACUUM. Oleh karena itu, dimungkinkan untuk mengkueri data dari versi tabel sebelumnya yang filenya telah dihapus. Menghidupkan ulang kluster akan menghapus data cache. Harap lihat Mengonfigurasi tembolokan disk.
Contoh sintaks untuk vakum
VACUUM table_name -- vacuum files not required by versions older than the default retention period
VACUUM table_name DRY RUN -- do dry run to get the list of files to be deleted
Untuk detail sintaks Spark SQL, lihat VACUUM.
Lihat dokumentasi Delta Lake API untuk detail sintaks Scala, Java, dan Python.
Catatan
Di Databricks Runtime 18.0 dan ke atas, gunakan properti tabel untuk mengontrol penyimpanan. Untuk tabel terkelola Unity Catalog, ini berlaku untuk Databricks Runtime 12.2 ke atas.
Lihat Mengonfigurasi retensi data untuk kueri perjalanan waktu.
Mode penuh versus mode ringan
Penting
Fitur ini ada di Pratinjau Umum di Databricks Runtime 16.1 atau versi yang lebih baru.
Anda dapat menentukan LITE kata kunci dalam pernyataan vakum Anda untuk memicu mode VACUUM alternatif yang menghindari daftar semua file dalam direktori tabel.
LITE mode menggunakan log transaksi untuk mengidentifikasi file data yang tidak lagi berada dalam VACUUM ambang retensi dan menghapus file data ini dari tabel.
LITE mode sangat berguna untuk tabel besar yang sering memerlukan operasi VACUUM, karena menghindari kebutuhan mencantumkan semua file untuk mengidentifikasi mana file data yang harus dihapus.
Catatan
Berjalan VACUUM dalam LITE mode tidak akan menghapus file apa pun yang tidak dirujuk dalam log transaksi. Misalnya, file yang dibuat oleh transaksi yang dibatalkan.
Gunakan sintaks berikut untuk VACUUM dalam LITE mode:
VACUUM table_name LITE
LITE mode memiliki persyaratan berikut:
- Anda harus menjalankan setidaknya satu operasi yang berhasil
VACUUMdalam ambang retensi log transaksi yang dikonfigurasi (30 hari secara default).
Jika persyaratan ini tidak terpenuhi, saat Anda mencoba menjalankan VACUUM dalam LITE mode, pesan kesalahan berikut akan ditampilkan. Untuk melanjutkan, Anda harus menjalankan VACUUM dalam mode FULL.
VACUUM <tableName> LITE cannot delete all eligible files as some files are not referenced by the log. Please run VACUUM FULL.
FULL mode adalah pengaturan default untuk mode vakum. Anda dapat secara eksplisit menjalankan mode penuh dengan perintah berikut:
VACUUM table_name FULL
Lihat VACUUM.
Hapus hanya metadata untuk memaksa penulisan ulang data
Perintah REORG TABLE dengan APPLY (PURGE) sintaks memungkinkan Anda menulis ulang data untuk menerapkan penghapusan sementara. Penghapusan sementara tidak menulis ulang data atau menghapus file data, melainkan menggunakan file metadata untuk menunjukkan bahwa beberapa nilai data telah berubah. Lihat REORG TABLE.
Operasi yang membuat penghapusan lunak mencakup yang berikut ini:
- Menghapus kolom dengan pemetaan kolom diaktifkan.
- Setiap modifikasi data dengan vektor penghapusan diaktifkan.
Dengan penghapusan sementara diaktifkan, data lama mungkin tetap ada secara fisik dalam file tabel saat ini bahkan setelah data dihapus atau diperbarui. Untuk menghapus data ini secara fisik dari tabel, selesaikan langkah-langkah berikut:
- Jalankan
REORG TABLE ... APPLY (PURGE). Setelah melakukan ini, data lama tidak lagi ada dalam file tabel saat ini , tetapi masih ada dalam file lama yang digunakan untuk perjalanan waktu. - Jalankan
VACUUMuntuk menghapus file lama ini.
REORG TABLE membuat versi baru tabel saat operasi selesai. Semua versi tabel dalam riwayat sebelum transaksi ini merujuk ke file data yang lebih lama. Secara konseptual, ini mirip dengan perintah OPTIMIZE, di mana file data ditulis kembali bahkan ketika data dalam versi tabel saat ini tetap konsisten.
Penting
File data hanya dihapus ketika file telah kedaluwarsa sesuai dengan VACUUM periode retensi. Ini berarti bahwa VACUUM harus dilakukan dengan penundaan setelah REORG sehingga file yang lebih lama telah kedaluwarsa. Periode retensi VACUUM dapat dikurangi untuk mempersingkat waktu tunggu yang diperlukan, dengan konsekuensi mengurangi riwayat maksimum yang dipertahankan.
Vakum membutuhkan kluster ukuran berapa?
Untuk memilih ukuran kluster yang benar untuk VACUUM, ini membantu memahami bahwa operasi terjadi dalam dua fase:
- Pekerjaan dimulai dengan menggunakan semua simpul eksekutor yang tersedia untuk mencantumkan file di direktori sumber secara paralel. Daftar ini dibandingkan dengan semua file yang saat ini dirujuk dalam log transaksi untuk mengidentifikasi file yang akan dihapus. Driver duduk diam selama waktu ini.
- Driver kemudian mengeluarkan perintah penghapusan untuk setiap file yang akan dihapus. Penghapusan file adalah operasi yang hanya melibatkan driver, yang berarti bahwa semua operasi terjadi dalam satu simpul sementara simpul pekerja dalam keadaan diam.
Untuk mengoptimalkan biaya dan performa, Databricks merekomendasikan hal berikut, terutama untuk pekerjaan vakum yang berjalan lama:
- Jalankan vakum pada kluster dengan penskalaan otomatis yang ditetapkan untuk 1-4 pekerja, di mana setiap pekerja memiliki 8 core.
- Pilih driver dengan antara 8 dan 32 core. Tingkatkan ukuran driver untuk menghindari kesalahan kehabisan memori (OOM).
Jika VACUUM operasi secara teratur menghapus lebih dari 10 ribu file atau mengambil lebih dari 30 menit waktu pemrosesan, Anda mungkin ingin meningkatkan ukuran driver atau jumlah pekerja.
Jika Anda menemukan bahwa perlambatan terjadi saat mengidentifikasi file yang akan dihapus, tambahkan lebih banyak node pekerja. Jika perlambatan terjadi saat perintah penghapusan sedang berjalan, coba tingkatkan ukuran driver.
Seberapa sering Anda harus menggunakan penyedot debu?
Databricks merekomendasikan menjalankan VACUUM secara teratur di semua tabel untuk mengurangi biaya penyimpanan data cloud berlebih. Ambang retensi default untuk vakum adalah 7 hari. Mengatur ambang yang lebih tinggi memberi Anda akses ke riwayat yang lebih besar untuk tabel Anda, tetapi meningkatkan jumlah file data yang disimpan dan, akibatnya, menimbulkan biaya penyimpanan yang lebih besar dari penyedia cloud Anda.
Mengapa Anda tidak dapat menyedot debu tabel dengan ambang retensi rendah?
Peringatan
Databricks sangat merekomendasikan pengaturan interval retensi setidaknya 7 hari. Jika Anda memiliki pekerjaan yang berjalan selama beberapa hari, pekerjaan jangka panjang mungkin menulis file yang belum dikonfirmasi. Jika periode retensi Anda terlalu pendek, VACUUM dapat menghapus file yang tidak dikomit ini sebelum pekerjaan selesai.
Ada pemeriksaan keamanan untuk mencegah Anda menjalankan perintah berbahaya VACUUM . Jika Anda yakin bahwa tidak ada operasi yang dilakukan pada tabel ini yang memakan waktu lebih lama dari interval retensi yang Anda rencanakan untuk ditentukan, nonaktifkan pemeriksaan keamanan ini dengan mengatur properti spark.databricks.delta.retentionDurationCheck.enabled konfigurasi Spark (Delta) atau spark.databricks.iceberg.retentionDurationCheck.enabled (Iceberg) ke false.
Informasi audit
VACUUM menerapkan informasi audit ke log transaksi. Kueri peristiwa audit menggunakan DESCRIBE HISTORY.
Pengelogan audit vakum dikontrol oleh konfigurasi spark.databricks.delta.vacuum.logging.enabled tingkat ruang kerja (Delta) atau spark.databricks.iceberg.vacuum.logging.enabled (Iceberg). Secara default, pengelogan audit diaktifkan di semua platform untuk tabel terkelola Unity Catalog.
Catatan
Pengelogan audit juga diaktifkan secara default untuk tabel eksternal.