Dalam pemrosesan data skala besar, operasi seperti JOIN dan GROUP BY sering memicu pengacakan data dalam jumlah besar, yang menyebabkan konsumsi CU tinggi dan kinerja pekerjaan melambat. Untuk mengatasi hal ini, optimalkan tata letak fisik data dengan menggunakan pengelompokan (clustering), yang dapat menghilangkan kebutuhan akan pengacakan. Namun, mengidentifikasi tabel dan kunci pengelompokan yang tepat bisa jadi kompleks. Rekomendasi optimasi pengelompokan mengotomatiskan proses ini dengan menganalisis pola baca-tulis historis suatu tabel untuk memberikan saran yang tepat dan dapat ditindaklanjuti guna menerapkan Hash Clustering. Penerapan rekomendasi ini secara signifikan mengurangi volume pengacakan, sehingga mempercepat eksekusi pekerjaan dan menurunkan biaya CU.
Lingkup
Wilayah yang didukung: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Shenzhen), dan Tiongkok (Chengdu).
Rekomendasi optimasi pengelompokan tidak didukung untuk proyek model tiga lapis.
Statistik mencakup riwayat eksekusi sebagian besar pekerjaan, tetapi mungkin tidak mencakup pekerjaan kompleks yang memiliki beberapa tugas eksekusi dasar. Akibatnya, rekomendasi mungkin tidak mencakup setiap pekerjaan.
Untuk detail tentang Hash Clustering, lihat Hash Clustering.
Lihat rekomendasi optimasi pengelompokan
Anda dapat melihat daftar tabel yang direkomendasikan, perkiraan manfaat dari pengelompokannya, serta saran terperinci untuk satu atau semua proyek di wilayah saat ini. Informasi ini membantu Anda memutuskan apakah akan menerapkan rekomendasi pengelompokan tersebut.
Masuk ke MaxCompute console, lalu pilih wilayah di pojok kiri atas.
Pada panel navigasi di sebelah kiri, pilih .
Pada tab Clustering Optimization, klik Estimated Benefits dan gunakan filter untuk memeriksa tabel yang memiliki rekomendasi pengelompokan.
Parameter
Deskripsi
Project Name
Pilih proyek MaxCompute. Jika tidak dipilih, nilai default-nya adalah All Projects.
Table Name
Masukkan nama tabel. Pencarian fuzzy didukung. Pisahkan beberapa nama tabel dengan koma (
,).Recommendation Generation Date
Tanggal saat rekomendasi dihasilkan. Nilai default-nya adalah hari sebelumnya.
Metrik manfaat perkiraan
Metric
Deskripsi
Estimated Number of Beneficial Jobs/Day
Perkiraan jumlah pekerjaan per hari yang akan mendapat manfaat dari pengelompokan tabel tersebut.
Estimated Shuffle Reduction/Day
Perkiraan pengurangan harian volume pengacakan jika tabel dikonversi menjadi tabel terkluster.
Mengurangi volume pengacakan secara langsung menurunkan konsumsi Jam-CU pekerjaan. Sebagai pedoman umum, setiap pengurangan 1 TB pengacakan menghemat 2 hingga 4 Jam-CU per hari.Daftar rekomendasi optimasi
Tinjau nilai yang direkomendasikan untuk parameter dalam daftar dan periksa saran untuk detail optimasi lebih lanjut mengenai tabel tersebut.
Kolom
Deskripsi
Project
Proyek yang berisi tabel yang direkomendasikan.
Table Name
Nama tabel yang direkomendasikan untuk dikelompokkan.
Type
Jenis pengelompokan yang direkomendasikan untuk tabel tersebut. Saat ini, hanya rekomendasi Hash Clustering yang didukung.
Suggested Cluster Key
ClusterKey yang direkomendasikan untuk tabel tersebut. Ini terutama terkait dengan Penghapusan Pengacakan (Shuffle Removal) dan penyaringan data untuk pencarian titik (point lookups).
Suggested Sort Key
SortKey yang direkomendasikan untuk tabel tersebut. Ini terutama terkait dengan penyaringan data dan rasio kompresi penyimpanan.
Bucket Count
Jumlah bucket yang direkomendasikan untuk tabel tersebut. Ini terutama terkait dengan paralelisme operasi penulisan tabel dan pekerjaan baca tabel setelah Penghapusan Pengacakan.
Recommendation Index
Penilaian bintang 1 hingga 5 yang menunjukkan potensi dampak dari penerapan rekomendasi tersebut. Skor yang lebih tinggi berarti rekomendasi yang lebih kuat. Skor dihitung sebagai berikut:
Dimensi evaluasi
Aturan Deduksi
Koefisien bobot
Kesesuaian waktu pola yang dapat dioptimalkan
Jendela pengamatan kurang dari 14 hari.
Kurangi 1 bintang
Penghematan data pengacakan saat baca
Jumlah yang dihemat kurang dari 1 TB.
Kurangi 1 bintang
Frekuensi pekerjaan tulis
Tidak ditemukan catatan pekerjaan tulis pada hari tersebut.
Kurangi 1 bintang
Jumlah partisi yang dapat dioptimalkan
Jika jumlah partisi yang dapat dioptimalkan lebih dari 3, kurangi 1 bintang.
Jika jumlah partisi yang dapat dioptimalkan lebih dari 31, kurangi 2 bintang.
Penyesuaian dinamis
CatatanSkor dikurangi jika tidak ada catatan pekerjaan tulis pada hari tersebut, karena potensi peningkatan biaya tulis tidak dapat diperkirakan.
Pengurangan diterapkan jika terdapat banyak partisi yang dapat dioptimalkan, karena optimasi pengelompokan hanya berlaku setelah menulis ulang sejumlah besar partisi yang ada dengan data baru atau melalui penulisan ulang aktif.
Estimated Shuffle Reduction/Day
Perkiraan pengurangan harian volume pengacakan setelah mengonversi tabel menjadi tabel terkluster.
Observation Interval
Jumlah hari berturut-turut rekomendasi ini dihasilkan.
Actions
Klik saran untuk membuka halaman Details of Table with Optimization Recommendations, yang mencakup hal-hal berikut:
Optimization Recommendations
Current Status of Table
Overview of Estimated Benefits
Estimated Shuffle Reduction/Day
Beneficial Table Read Jobs
Full Table Write Jobs
Full Table Read Jobs
Terapkan rekomendasi optimasi pengelompokan
Terapkan rekomendasi langsung ke tabel asli
Menggunakan UI
Untuk tabel partisi, Anda dapat menerapkan rekomendasi dengan sekali klik untuk mengonversi tabel asli menjadi tabel terkluster.
Pada panel navigasi di sebelah kiri, pilih .
Pada tab Clustering Optimization, klik Estimated Benefits.
Klik View Details pada kolom Actions untuk tabel target guna membuka halaman Details of Table with Optimization Recommendations.
Di pojok kanan atas, klik Apply Recommendations untuk menyelesaikan konversi.
Menggunakan perintah SQL
Jalankan perintah berikut:
-- Ubah tabel menjadi tabel Hash Clustering. ALTER TABLE <table_name> [CLUSTERED BY (<col_name> [, <col_name>, ...]) [SORTED BY (<col_name> [ASC | DESC] [, <col_name> [ASC | DESC] ...])] INTO <number_of_buckets> BUCKETS];Setelah konversi, periksa tabel terkluster dan jalankan pekerjaan baca terkait untuk memverifikasi bahwa semuanya berjalan sesuai harapan. Jika muncul masalah, segera lakukan rollback dengan menjalankan perintah berikut.
-- Ubah tabel Hash Clustering kembali menjadi tabel non-clustered. ALTER TABLE <table_name> NOT CLUSTERED;
Setelah mengonversi tabel menjadi tabel terkluster, Anda tidak dapat lagi melakukan operasi tulis inkremental seperti
INSERT INTOatau unggahan Tunnel.Anda tidak dapat langsung menerapkan rekomendasi pengelompokan ke tabel non-partisi.
Pengelompokan meningkatkan latensi dan biaya CU operasi tulis, tetapi menguranginya untuk operasi baca, sehingga menghasilkan pengurangan bersih konsumsi CU secara keseluruhan.
Untuk skenario tertentu, tulis ulang partisi dan verifikasi manfaatnya bagi pekerjaan downstream yang dapat dioptimalkan. Untuk informasi selengkapnya, lihat (Recommended) Rewrite partition data.
(Recommended) Rewrite partition data
Perubahan pada properti pengelompokan hanya berlaku untuk data baru. Untuk menerapkan optimasi pada data yang sudah ada, Anda harus menulis ulang partisi terkait. Menulis ulang partisi diperlukan dalam skenario berikut untuk memverifikasi manfaat bagi pekerjaan downstream:
Tabel tersebut merupakan dependensi untuk pekerjaan prioritas tinggi yang sensitif terhadap latensi.
Tabel tersebut memiliki partisi besar, dengan operasi tulis tunggal melebihi 10 TB.
Pekerjaan downstream membaca dari beberapa partisi. Untuk mendapatkan manfaat optimasi penuh, semua partisi terkait yang dibaca oleh pekerjaan tersebut harus ditulis ulang.
Jika tabel tersebut merupakan tabel besar dalam pekerjaan merge-write harian full-and-incremental, tulis ulang partisi hari terakhir. Hal ini mengurangi risiko peningkatan biaya dan waktu eksekusi yang lebih lambat ketika pekerjaan full-and-incremental pertama kali dijalankan pada hari berikutnya.
-- Asumsikan kolom kunci partisi adalah ds, dan partisi baru seperti 20241015 dan 20241016 ditambahkan setiap hari. Data partisi baru diperoleh dengan menggabungkan data inkremental dari partisi hari sebelumnya. INSERT OVERWRITE TABLE <table_name> PARTITION(ds) SELECT * FROM <table_name> WHERE ds = max_pt('<table_name>');Jika pekerjaan yang dapat dioptimalkan membaca dari beberapa partisi yang sudah ada, tulis ulang partisi yang ada dalam rentang baca untuk menerapkan optimasi pengelompokan lebih cepat.
-- Asumsikan kolom kunci partisi adalah ds, dan partisi baru seperti 20241015, 20241016, dan seterusnya ditambahkan setiap hari. Rentang baca dimulai dari 20241015. INSERT OVERWRITE TABLE <table_name> PARTITION(ds) SELECT * FROM <table_name> WHERE ds >='20241015';Setelah menulis ulang, jalankan uji coba pekerjaan yang dapat dioptimalkan untuk memverifikasi efektivitas optimasi tersebut.
Terapkan rekomendasi ke tabel baru
Untuk tabel non-partisi, Anda tidak dapat langsung mengubah atribut pengelompokan tabel asli. Oleh karena itu, Anda harus menerapkan perubahan secara manual dengan membuat tabel terkluster baru.
Buat tabel cluster.
-- Periksa pernyataan CREATE TABLE dari tabel yang ada. SHOW CREATE TABLE <orignal_table>; -- Masukkan informasi CLUSTER ke posisi yang sesuai dalam sintaks CREATE TABLE untuk membuat tabel terkluster baru. CREATE TABLE <new_table> [CLUSTERED BY (<col_name> [, <col_name>, ...]) [SORTED BY (<col_name> [ASC | DESC] [, <col_name> [ASC | DESC] ...])] INTO <number_of_buckets> BUCKETS];Muat data ke tabel baru.
INSERT OVERWRITE TABLE <new_table> SELECT * FROM <orignal_table>;Buat cadangan tabel asli.
ALTER TABLE <orignal_table> RENAME TO <orignal_table_backup>;Ubah nama tabel baru menjadi nama tabel asli.
ALTER TABLE <new_table> RENAME TO <orignal_table>;
Tabel baru kini memiliki nama yang sama dengan tabel asli dan akan mengelompokkan data sesuai atribut barunya.
Rollback untuk penerapan tabel baru
Periksa tabel terkluster baru untuk memastikan semua pekerjaan berjalan sesuai harapan. Jika muncul masalah, segera lakukan rollback dengan menjalankan perintah berikut.
Hapus tabel baru (yang memiliki nama yang sama dengan tabel asli).
DROP TABLE IF EXISTS <orignal_table>;Ubah nama tabel cadangan menjadi nama tabel asli.
ALTER TABLE <orignal_table_backup> RENAME TO <orignal_table>;
Lihat manfaat optimasi pengelompokan
Pada tab Clustering Optimization, klik Actual Benefits untuk melihat keuntungan dari optimasi pengelompokan.
Masuk ke MaxCompute console, lalu pilih wilayah di pojok kiri atas.
Pada panel navigasi di sebelah kiri, pilih .
Pada tab Clustering Optimization, klik Actual Benefits.
Filter berdasarkan Project Name dan Analysis Time untuk melihat ringkasan dan rincian manfaat dari tabel dengan atribut pengelompokan yang telah dimodifikasi.
Deskripsi indikator manfaat
Metric
Deskripsi
Number of Benefited Jobs
Jumlah pembacaan pada tabel terkluster yang baru saja dimodifikasi selama periode analisis manfaat.
Saved CU-hours
Pengurangan Jam-CU untuk pekerjaan yang membaca tabel terkluster yang dimodifikasi, dibandingkan dengan konsumsi sebelum perubahan.
Reduced Shuffle Amount
Pengurangan volume pengacakan untuk pekerjaan yang membaca tabel terkluster yang dimodifikasi, dibandingkan dengan konsumsi sebelum perubahan.
Statistik manfaat dihitung dengan membandingkan konsumsi rata-rata pekerjaan dengan signature yang sama sebelum dan sesudah perubahan rekomendasi diterapkan. Statistik ini mencakup tabel terkluster yang dimodifikasi berdasarkan rekomendasi dalam 365 hari terakhir.
Daftar yang dioptimalkan
Kolom
Deskripsi
Project
Proyek yang berisi tabel terkluster dengan atribut yang telah dimodifikasi.
Table Name
Nama tabel dengan atribut pengelompokan yang telah dimodifikasi.
Clustering Attribute Modification Time
Tanggal terakhir atribut pengelompokan tabel dimodifikasi.
Number of Benefited Jobs
Jumlah kali tabel dibaca selama periode analisis manfaat setelah atribut pengelompokannya dimodifikasi.
Saved Computing Duration
Pengurangan durasi komputasi untuk pekerjaan yang membaca tabel ini selama periode analisis, dibandingkan sebelum atribut dimodifikasi.
Saved CU-hours
Pengurangan konsumsi Jam-CU untuk pekerjaan yang membaca tabel ini selama periode analisis, dibandingkan sebelum atribut dimodifikasi.
Reduced Shuffle Amount
Pengurangan volume shuffle untuk pekerjaan yang membaca tabel ini selama periode analisis, dibandingkan sebelum atribut dimodifikasi.
Actions
Klik saran untuk menuju ke halaman Details of Optimized Table, yang mencakup informasi berikut:
Current Status of Table
Clustering Type
ClusterKey
SortKey
Number of Buckets
Partition Key
Benefit Overview
Number of Benefited Jobs
Saved CU-hours
Reduced Shuffle Amount
Daftar pekerjaan baca yang mendapatkan manfaat
Signature
Saved Computing Duration
Saved CU-hours
Reduced Shuffle Amount
PentingStatistik manfaat pekerjaan harian diperbarui dengan basis T+1. Anda dapat melihat efek optimasi secara real-time di Job Monitoring atau Logview.
Statistik manfaat didasarkan pada signature pekerjaan historis dan dapat dipengaruhi oleh fluktuasi kinerja harian. Jika manfaat tidak sesuai ekspektasi, bandingkan detail eksekusi pekerjaan dari tanggal berbeda untuk mengidentifikasi faktor yang memengaruhi.
Statistik ini hanya sebagai referensi. Penghematan CU akhir tercermin dalam tagihan bulanan.