Konfigurasikan lifecycle tabel untuk secara otomatis membersihkan data yang tidak berubah, sehingga mengurangi biaya penyimpanan sekaligus menjaga kesegaran data.
Lifecycle
MaxCompute secara otomatis membersihkan tabel atau partisi yang datanya tidak berubah melebihi durasi lifecycle yang dikonfigurasi. Sistem melakukan pemindaian data kedaluwarsa setiap hari.
Jika LastModifiedTime pada tabel non-partisi melebihi nilai lifecycle-nya, MaxCompute akan membersihkan datanya dan menghapus tabel tersebut.
Untuk tabel partisi, MaxCompute membersihkan partisi satu per satu berdasarkan LastModifiedTime-nya. Tabel tetap ada meskipun semua partisinya telah dibersihkan.
Untuk menghapus tabel secara otomatis setelah partisi terakhirnya dibersihkan, gunakan salah satu metode berikut:
CatatanPengaturan tingkat tabel memiliki prioritas lebih tinggi daripada pengaturan tingkat proyek.
Pengaturan tingkat proyek
-- Menghapus tabel secara otomatis setelah partisi terakhir tabel tersebut dibersihkan. setproject odps.table.lifecycle.deletemeta.on.expiration=true; -- Secara default mempertahankan tabel setelah partisi terakhirnya dibersihkan. setproject odps.table.lifecycle.deletemeta.on.expiration=false;Pengaturan tingkat tabel
--- Membuat tabel dan mengonfigurasi parameter terkait lifecycle agar tabel dihapus secara otomatis setelah partisi terakhirnya dibersihkan. CREATE TABLE <Table_Name>(id int, name string) partitioned BY (ds string) tblproperties ('lifecycle.deletemeta'='true') lifecycle 1; --- Jika tabel sudah ada, konfigurasikan parameter terkait lifecycle agar tabel dihapus secara otomatis setelah partisi terakhirnya dibersihkan. ALTER TABLE <table_name> SET tblproperties('lifecycle.deletemeta'='true'); -- Secara default mempertahankan tabel setelah partisi terakhirnya dibersihkan. ALTER TABLE <table_name> SET tblproperties('lifecycle.deletemeta'='false');
Catatan penggunaan
Ketergantungan penjadwalan tugas tidak mencegah pembersihan data setelah masa lifecycle berakhir.
Lifecycle berlaku untuk seluruh tabel partisi. Anda tidak dapat mengonfigurasi lifecycle pada tingkat partisi.
Data yang dibersihkan disimpan di recycle bin selama satu hari secara default, lalu dihapus permanen dan tidak dapat dipulihkan.
Pembersihan mungkin tidak terjadi segera setelah masa lifecycle berakhir. Waktu pelaksanaannya bergantung pada ketersediaan sistem.
Operasi penulisan, pembaruan, atau penghapusan data akan memperbarui LastModifiedTime. Mengubah nilai lifecycle tidak memperbarui waktu tersebut.
Konfigurasi lifecycle tabel
Tetapkan lifecycle saat pembuatan tabel
Sintaks
-- Membuat tabel. CREATE [external] TABLE [if not exists] <table_name> [(<col_name> <data_type> [default <default_value>] [comment <col_comment>], ...)] [comment <table_comment>] [partitioned BY (<col_name> <data_type> [comment <col_comment>], ...)] -- Mengonfigurasi properti shuffle dan sort untuk tabel terkluster yang ingin Anda buat. [clustered BY | range clustered BY (<col_name> [, <col_name>, ...]) [sorted BY (<col_name> [ASC | DESC] [, <col_name> [ASC | DESC] ...])] INTO <number_of_buckets> buckets] -- Hanya digunakan untuk tabel eksternal. [stored by StorageHandler] -- Hanya digunakan untuk tabel eksternal. [with serdeproperties (options)] -- Hanya digunakan untuk tabel eksternal. [location <osslocation>] -- Mengonfigurasi lifecycle untuk tabel. lifecycle <days>; -- Membuat tabel berdasarkan tabel yang sudah ada dan mereplikasi skemanya. Anda dapat menjalankan pernyataan CREATE TABLE untuk membuat tabel berdasarkan tabel eksternal atau tabel yang sudah ada dari proyek eksternal yang digunakan dalam solusi danau data terpadu. create table [if not exists] <table_name> like <existing_table_name> [lifecycle <days>];Parameter
table_name: wajib. Nama tabel.
days: wajib. Durasi lifecycle dalam bentuk bilangan bulat positif. Satuan: hari.
CatatanBagian ini hanya mencakup parameter yang terkait dengan lifecycle. Untuk informasi lebih lanjut tentang parameter pembuatan tabel, lihat Buat tabel.
Contoh
-- Membuat tabel test_lifecycle dengan lifecycle 100 hari. CREATE TABLE test_lifecycle (key string) lifecycle 100;
Konfigurasi atau modifikasi lifecycle tabel yang sudah ada
Jalankan pernyataan berikut untuk mengubah lifecycle tabel yang sudah ada.
Sintaks
ALTER TABLE <Table_Name> SET lifecycle <days>;Parameter
table_name: wajib. Nama tabel.
days: wajib. Durasi lifecycle baru dalam bentuk bilangan bulat positif. Satuan: hari.
Contoh
-- Mengubah lifecycle tabel test_lifecycle menjadi 50 hari. ALTER TABLE test_lifecycle set lifecycle 50;
Nonaktifkan atau pulihkan lifecycle tabel
Sintaks
ALTER TABLE <table_name> [<pt_spec>] {enable|disable} lifecycle;Parameter
table_name: wajib. Nama tabel.
pt_spec: opsional. Partisi target. Untuk partisi multi-level, tentukan semua kolom kunci partisi dalam format
partition_col1=col1_value1, partition_col2=col2_value1....enable dan disable: memulihkan atau menonaktifkan lifecycle untuk tabel atau partisi.
CatatanSebelum memulihkan lifecycle, pastikan nilai lifecycle yang dikonfigurasi untuk mencegah pembersihan data yang tidak diinginkan.
Penonaktifan lifecycle pada tingkat tabel mengesampingkan pengaktifan pada tingkat partisi. Jika lifecycle tabel dinonaktifkan,
table disable lifecyclemengesampingkanpt_spec enable lifecycle.Menonaktifkan lifecycle tidak menghapus pengaturan yang ada. Anda tetap dapat mengubah nilai lifecycle meskipun dalam keadaan dinonaktifkan.
Contoh
Contoh 1: Nonaktifkan lifecycle untuk tabel
trans.ALTER TABLE trans disable lifecycle;Contoh 2: Nonaktifkan lifecycle untuk partisi dt='20141111' pada tabel
trans.ALTER TABLE trans partition (dt='20141111') disable lifecycle;