Pekerjaan BUILD digunakan untuk membangun ulang partisi yang memiliki data baru. Ini membantu meningkatkan kinerja baca dengan membuat indeks, membersihkan data berlebih, dan mengeksekusi pernyataan DDL secara asinkron.
Ikhtisar
Selama pekerjaan BUILD, sistem menggabungkan data real-time dengan partisi historis, membuat indeks, dan mengeksekusi pernyataan DDL secara asinkron. Setelah menjalankan pernyataan INSERT, UPDATE, atau DELETE pada data dalam partisi, Anda dapat menjalankan pekerjaan BUILD untuk membangun ulang partisi tersebut. Partisi tanpa perubahan data tidak akan dibangun ulang.
Pekerjaan BUILD dijadwalkan pada tingkat tabel. Pekerjaan BUILD dari tabel berbeda dapat dijalankan secara paralel. Setelah dimulai, pekerjaan ini dibagi menjadi tugas-tugas pada tingkat shard. Ketiga replika dari sebuah shard masing-masing menjalankan satu tugas. Pekerjaan BUILD selesai ketika semua tugas selesai.
Catatan Penggunaan
Selama pekerjaan BUILD, Anda tidak dapat mengeksekusi pernyataan
INSERT OVERWRITE SELECTuntuk menyisipkan data ke dalam tabel hingga pekerjaan BUILD selesai. Sebagai alternatif, gunakan pernyataanINSERT INTO.Setelah mengirimkan pekerjaan BUILD, Anda tidak dapat membatalkannya.
Secara default, jumlah pekerjaan BUILD bersamaan adalah hasil pembulatan ke atas dari
Jumlah core/3dan tidak dapat diubah.Sebagai contoh, jika spesifikasi node kluster AnalyticDB for MySQL adalah 32 core dan 128 GB memori, jumlah pekerjaan BUILD bersamaan adalah 11 (hasil pembulatan ke atas dari
32/3).Pekerjaan BUILD mengonsumsi sumber daya CPU, memori, dan I/O. Akibatnya, metrik seperti utilisasi CPU dan penggunaan disk I/O mungkin meningkat. Setelah pekerjaan BUILD selesai, metrik tersebut kembali normal. Disarankan untuk menjalankan pekerjaan BUILD selama jam-jam sepi.
Pemicu Otomatis Pekerjaan BUILD
Pekerjaan BUILD dipicu secara otomatis ketika salah satu kondisi berikut terpenuhi:
Jangka waktu sejak pekerjaan BUILD terakhir mencapai interval minimum dan setidaknya 50.000 baris data ditambahkan ke shard dari sebuah tabel.
Interval waktu untuk Enterprise Edition, Basic Edition, atau Data Lakehouse Edition: 1,5 jam.
Interval waktu untuk Data Warehouse Edition dalam mode elastis: 1,5 jam.
Interval waktu untuk Data Warehouse Edition dalam mode cadangan: 0,5 jam.
Dua puluh empat jam telah berlalu sejak pekerjaan BUILD terakhir dan setidaknya satu baris data dimodifikasi.
Pemicu Manual Pekerjaan BUILD
Jalankan Pernyataan BUILD pada Partisi yang Mengalami Perubahan Data
Tabel XUANWU
BUILD TABLE <table_name>;Metode ini hanya memicu pekerjaan BUILD pada partisi yang datanya dimodifikasi.
Tabel XUANWU_V2
BUILD TABLE <table_name> [BUILD_OPTION];BUILD_OPTION: hanya mendukung nilaittl, yang merupakan parameter opsional. Jika parameter ini dibiarkan kosong, metode ini hanya memicu pekerjaan BUILD pada partisi yang dimodifikasi. Jika ditentukan, metode ini segera menghapus partisi kadaluwarsa setelah pekerjaan BUILD selesai.
CatatanUntuk informasi tentang cara menentukan mesin tabel, lihat bagian "Tentukan Mesin Tabel" dari topik Mesin XUANWU_V2.
Jalankan Pernyataan BUILD pada Partisi Spesifik
BUILD TABLE test force partitions='partition1,partition2';Anda dapat menjalankan pernyataan BUILD pada partisi spesifik hanya untuk kluster AnalyticDB for MySQL versi V3.1.6.0 atau lebih baru. Untuk informasi tentang cara melihat versi minor kluster AnalyticDB for MySQL, lihat Bagaimana cara melihat versi minor dari kluster? Untuk memperbarui versi minor kluster, hubungi dukungan teknis.
Jika sebuah tabel berisi volume data besar, pernyataan BUILD TABLE <table_name> force = true; mungkin memerlukan waktu lama untuk dieksekusi. AnalyticDB for MySQL memungkinkan Anda menentukan partisi tempat Anda ingin menjalankan pekerjaan BUILD. Ini membantu mengurangi penggunaan sumber daya dan meningkatkan kinerja pekerjaan BUILD.
Jalankan Pernyataan BUILD pada Seluruh Tabel
BUILD TABLE <table_name> force = true;Metode ini memicu pekerjaan BUILD dan membuat ulang indeks untuk semua partisi tabel. Secara default, fitur ini dinonaktifkan.
Metode ini membuat ulang indeks untuk semua data dalam tabel, yang membutuhkan waktu lama. Kami merekomendasikan agar Anda menjalankan pernyataan BUILD pada partisi spesifik. Sebelum menjalankan pernyataan BUILD pada seluruh tabel, evaluasi efek dan risiko. Untuk mengaktifkan fitur ini, submit a ticket.
Konfigurasikan Penjadwalan Otomatis untuk Pekerjaan BUILD
Metode Konfigurasi
SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`<start>,<end>`;Parameter
startdanendmenentukan rentang waktu penjadwalan pekerjaan BUILD. Atur parameter dalam rentang 0 hingga 24 dan tutup rentang waktu dengan backticks (` `). Anda dapat mengonfigurasi beberapa rentang waktu, pisahkan dengan titik koma (;).Sebagai contoh, atur parameter
startke 0 dan parameterendke 6 untuk menjadwalkan pekerjaan BUILD dalam rentang 00:00 hingga 06:59.PentingRentang waktu yang ditentukan digunakan untuk penjadwalan pekerjaan, bukan untuk eksekusi pekerjaan. Oleh karena itu, sistem mungkin belum menyelesaikan eksekusi pekerjaan ketika rentang waktu berakhir.
Contoh
Konfigurasikan pekerjaan BUILD untuk dijadwalkan dalam rentang waktu berikut: 00:00 hingga 06:59 dan 18:00 hingga 22:59.
SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`0,6;18,22`;Setelah mengeksekusi pernyataan di atas, sistem akan menjadwalkan pekerjaan BUILD dalam rentang 00:00 hingga 06:59 dan 18:00 hingga 22:59.
Konfigurasikan Prioritas Penjadwalan untuk Pekerjaan BUILD
Urutan penjadwalan pekerjaan BUILD didasarkan pada jumlah data yang ditambahkan ke shard individu dari tabel. Semakin besar jumlah data yang ditambahkan, semakin awal pekerjaan dijadwalkan dan dieksekusi. Anda juga dapat menggunakan petunjuk atau mengeksekusi pernyataan SET ADB_CONFIG untuk mengonfigurasi prioritas penjadwalan pekerjaan BUILD untuk tabel.
Anda hanya dapat mengonfigurasi prioritas penjadwalan pekerjaan BUILD untuk kluster AnalyticDB for MySQL versi V3.1.5.0 atau lebih baru.
Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information dari halaman Cluster Information.
Sebuah petunjuk hanya mendukung satu tabel. Prioritas yang dikonfigurasi hanya berlaku untuk pekerjaan BUILD saat ini.
Pernyataan
SET ADB_CONFIGmendukung satu atau lebih tabel. Prioritas yang dikonfigurasi tetap berlaku hingga Anda mengonfigurasi prioritas penjadwalan baru untuk pekerjaan BUILD pada tabel tersebut.Jika Anda menggunakan petunjuk dan pernyataan
SET ADB_CONFIGuntuk mengonfigurasi prioritas penjadwalan berbeda untuk pekerjaan BUILD pada sebuah tabel, prioritas penjadwalan berbasis petunjuk akan didahulukan dalam pekerjaan saat ini.
Parameter task_priority menentukan prioritas penjadwalan pekerjaan BUILD. Nilainya harus berupa bilangan bulat. Nilai default adalah 0. Nilai yang lebih besar menentukan prioritas penjadwalan yang lebih tinggi. Setelah mengonfigurasi prioritas untuk pekerjaan BUILD, node frontend menjadwalkan pekerjaan BUILD berdasarkan prioritas. Jika Anda mengatur parameter task_priority ke nilai kurang dari 0 untuk sebuah tabel, penjadwalan otomatis pekerjaan BUILD dinonaktifkan untuk tabel tersebut.
Metode konfigurasi:
Gunakan Petunjuk
/*build_task_priority = <task_priority> */ BUILD TABLE <db_name>.<table_name>;Sebagai contoh, atur prioritas penjadwalan pekerjaan BUILD ke 30 untuk tabel
testdalam databaseadb_demo./*build_task_priority = 30 */ Build TABLE adb_demo.test;Gunakan Pernyataan SET ADB_CONFIG
Konfigurasikan prioritas penjadwalan pekerjaan BUILD untuk beberapa tabel di database yang berbeda.
SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.<table1_name>.<task_priority>;<db2_name>.<table2_name>.<task_priority>`;CatatanPisahkan beberapa tabel dengan titik koma (;).
Sebagai contoh, atur prioritas penjadwalan pekerjaan BUILD ke 30 untuk tabel
test1dalam databaseadb_demo1dan 10 untuk tabeltest2dalam databaseadb_demo2.SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.test1.30;adb_demo2.test2.10`;Konfigurasikan prioritas penjadwalan yang sama untuk semua tabel dalam sebuah database.
SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.*.<task_priority>`;Sebagai contoh, atur prioritas penjadwalan pekerjaan BUILD ke 30 untuk semua tabel dalam database
adb_demo1.SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.*.30`;Konfigurasikan prioritas penjadwalan berbeda antara sebuah tabel dan tabel lainnya dalam database yang sama.
SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.*.<task_priority>;<db1_name>.<table_name>.<task_priority>`;Sebagai contoh, atur prioritas penjadwalan pekerjaan BUILD ke 30 untuk tabel
test1dalam databaseadb_demo1dan 10 untuk semua tabel lainnya dalam database tersebut.SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.*.10;adb_demo1.test1.30`;
Anda dapat mengeksekusi pernyataan SHOW ADB_CONFIG untuk menanyakan prioritas penjadwalan saat ini untuk pekerjaan BUILD.
Periksa Status Pekerjaan BUILD
Setelah pekerjaan BUILD dipicu secara otomatis atau manual, Anda dapat mengeksekusi pernyataan SQL berikut untuk menanyakan status pekerjaan BUILD dalam tiga hari terakhir:
SELECT table_name, schema_name, status FROM INFORMATION_SCHEMA.KEPLER_META_BUILD_TASK ORDER BY create_time DESC LIMIT 10;Tabel berikut menjelaskan status pekerjaan BUILD berdasarkan nilai parameter status.
Nilai dari | Deskripsi |
INIT | Pekerjaan sedang diinisialisasi. |
RUNNING | Pekerjaan sedang berjalan. |
FINISH | Pekerjaan selesai. |
FAQ
Mengapa penjadwalan otomatis pekerjaan BUILD gagal berlaku?
Penyebab: Parameter terkait waktu tidak diapit oleh backticks (` `). Akibatnya, parameter gagal diproses.
Solusi: Saat mengeksekusi pernyataan SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD untuk mengonfigurasi penjadwalan otomatis, apit parameter start dan end dengan backticks (` `). Sebagai contoh, SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`0,6`; menentukan bahwa sistem menjadwalkan pekerjaan BUILD dalam rentang 00:00 hingga 06:59.