全部产品
Search
文档中心

MaxCompute:PEMAMPATAN

更新时间:Jun 19, 2025

Menggabungkan semua file data berdasarkan kebijakan tertentu untuk meningkatkan efisiensi kueri.

Deskripsi

Tabel Delta mendukung penulisan data inkremental hampir real-time dan kueri perjalanan waktu. Jika data sering ditulis, banyak file kecil akan dihasilkan. Kebijakan pemampatan yang efisien diperlukan untuk menggabungkan file kecil dan menghapus duplikat data. Kebijakan ini harus menyelesaikan masalah rendahnya Throughput I/O akibat banyaknya file kecil serta mengurangi tekanan pada sistem penyimpanan. Selain itu, kebijakan tersebut juga harus mencegah amplifikasi tulis yang signifikan dan kegagalan akibat konflik dalam skenario pemampatan yang sering terjadi.

Metode penggabungan data yang didukung meliputi:

  • Pengelompokan: File delta digabungkan menjadi file besar tanpa mengubah konten data. File delta mencakup data dari operasi yang telah dilakukan. Sistem secara berkala melakukan pengelompokan berdasarkan faktor-faktor seperti ukuran dan jumlah file baru. Tidak diperlukan intervensi manual. Metode ini membantu meningkatkan Throughput I/O dan stabilitas file kecil.

  • Pemampatan: Semua file data digabungkan berdasarkan kebijakan tertentu untuk menghasilkan sekelompok file dasar. Hanya status terbaru yang disimpan untuk baris data dengan kunci utama yang sama. Status historis atau informasi kolom sistem tidak disimpan. Ini membantu meningkatkan efisiensi kueri.

Sintaksis

alter table <table_name> [partition 
                          (<partition_key> = '<partition_value>' [, ...])
                         ] 
                         compact major;

Perhatian

  • Untuk memicu pemampatan secara manual, Anda harus mengonfigurasi pengaturan berikut:

     set odps.merge.task.mode=service;
  • Operasi pemampatan meningkatkan efisiensi kueri tetapi meningkatkan biaya penyimpanan karena file baru dihasilkan selama proses pemampatan. Frekuensi pemicuan dapat dikonfigurasi sesuai kebutuhan bisnis Anda.

  • Operasi pemampatan menggunakan sumber daya komputasi untuk pembacaan dan penulisan ulang data. Jika Anda menggunakan metode penagihan bayar sesuai pemakaian, biaya operasi pemampatan dihitung berdasarkan rumus berikut: Jumlah data yang dipindai × 1 × Harga satuan

    Jika Anda menggunakan metode penagihan langganan, operasi pemampatan menggunakan kuota sumber daya komputasi langganan.

Contoh

-- Buat tabel.
create table mf_dt (pk bigint not null primary key, val bigint not null) 
             partitioned by (dd string, hh string) 
             tblproperties ("transactional"="true");
-- Masukkan data ke dalam tabel.            
insert into table mf_dt partition(dd='01', hh='01') values (1, 1), (2, 2);
insert into table mf_dt partition(dd='01', hh='01') values (2, 20), (3, 3);
insert into table mf_dt partition(dd='01', hh='01') values (3, 30), (4, 4);

-- Lakukan operasi pemampatan. Setelah operasi pemampatan selesai, Anda dapat melanjutkan untuk menanyakan data historis. 
set odps.merge.task.mode=service;
alter table mf_dt partition(dd='01', hh='01') compact major;
select * from mf_dt timestamp as of get_latest_timestamp('mf_dt') where dd='01' and hh='01';
select * from mf_dt timestamp as of get_latest_timestamp('mf_dt', 2) where dd='01' and hh='01';