All Products
Search
Document Center

AnalyticDB:BUILD

Last Updated:Mar 29, 2026

Pekerjaan BUILD membangun ulang partisi setelah data ditulis, membuat indeks, dan membersihkan data redundan untuk meningkatkan performa baca. Selama pekerjaan BUILD berjalan, sistem menggabungkan data yang ditulis secara real time dengan partisi historis, membuat indeks, serta mengeksekusi pernyataan DDL yang tertunda secara asinkron.

Cara kerja

Pekerjaan BUILD beroperasi pada dua tingkat:

  • Tingkat tabel: Tabel-tabel berbeda menjalankan pekerjaan BUILD secara paralel.

  • Tingkat shard: Setelah pekerjaan BUILD suatu tabel dimulai, pekerjaan tersebut dibagi menjadi tugas-tugas di seluruh shard. Ketiga replika dari setiap shard menjalankan tugasnya secara independen. Pekerjaan BUILD selesai ketika semua tugas shard selesai.

Pekerjaan BUILD hanya memproses partisi yang mengalami perubahan data—partisi tanpa operasi INSERT, UPDATE, atau DELETE baru akan dilewati.

Catatan penggunaan

  • Selama pekerjaan BUILD berjalan, INSERT OVERWRITE SELECT diblokir. Gunakan INSERT INTO sebagai gantinya.

  • Anda tidak dapat membatalkan pekerjaan BUILD setelah dikirim.

  • Jumlah pekerjaan BUILD konkuren sama dengan ceil(jumlah core / 3) dan tidak dapat diubah. Untuk kluster 32-core, jumlah ini adalah 11 pekerjaan konkuren.

  • Pekerjaan BUILD mengonsumsi sumber daya CPU, memori, dan I/O. Utilisasi CPU dan penggunaan I/O disk mungkin melonjak saat pekerjaan berjalan dan kembali normal setelah selesai. Jalankan pekerjaan BUILD selama jam sepi.

Memicu pekerjaan BUILD secara otomatis

Pekerjaan BUILD dipicu secara otomatis ketika salah satu kondisi berikut terpenuhi:

Kondisi 1: Data baru yang cukup telah terakumulasi

Waktu sejak pekerjaan BUILD terakhir mencapai interval minimum *dan* setidaknya 50.000 baris telah ditambahkan ke suatu shard.

EdisiMinimum Interval
Enterprise Edition1,5 jam
Basic Edition1,5 jam
Data Lakehouse Edition1,5 jam
Data Warehouse Edition (elastic mode)1,5 jam
Data Warehouse Edition (reserved mode)0,5 jam

Kondisi 2: Cadangan berbasis waktu

Telah berlalu 24 jam sejak pekerjaan BUILD terakhir dan setidaknya satu baris telah dimodifikasi.

Memicu pekerjaan BUILD secara manual

Build hanya partisi yang berubah

Perilaku default—membangun ulang hanya partisi yang mengalami perubahan data.

  • Tabel XUANWU

    BUILD TABLE <table_name>;
  • Tabel XUANWU_V2

    Catatan

    Untuk informasi tentang cara menentukan dan menetapkan mesin tabel, lihat bagian "Tentukan mesin tabel" dalam topik mesin XUANWU_V2.

    BUILD TABLE <table_name> [BUILD_OPTION];

    BUILD_OPTION hanya menerima ttl (opsional). Jika ditentukan, partisi yang kedaluwarsa akan dihapus segera setelah pekerjaan BUILD selesai. Jika dihilangkan, hanya partisi yang berubah yang dibangun ulang.

Build partisi tertentu

Tersedia untuk kluster AnalyticDB for MySQL yang menjalankan V3.1.6.0 atau lebih baru.

BUILD TABLE test force partitions='partition1,partition2';

Gunakan pendekatan ini ketika tabel berisi volume data besar dan menjalankan BUILD seluruh tabel akan membutuhkan banyak sumber daya. Menargetkan partisi tertentu mengurangi penggunaan sumber daya dan mempercepat pekerjaan.

Penting

Untuk melihat versi minor kluster Anda, lihat Bagaimana cara melihat versi minor kluster? Untuk memperbarui versi minor, hubungi dukungan teknis.

Membangun seluruh tabel

Penting

Operasi ini membuat ulang indeks untuk semua data yang ada dan dapat memakan waktu lama untuk diselesaikan. Evaluasi dampak dan risiko sebelum melanjutkan. Fitur ini dinonaktifkan secara default—ajukan tiket untuk mengaktifkannya. Gunakan pendekatan partisi tertentu di atas bila memungkinkan.

BUILD TABLE <table_name> force = true;

Ini membuat ulang indeks untuk semua partisi dalam tabel, termasuk yang tidak mengalami perubahan data.

Penjadwalan pekerjaan BUILD

Secara default, pekerjaan BUILD dijalankan seiring akumulasi data. Untuk membatasinya hanya pada jendela waktu tertentu—misalnya menghindari jam sibuk bisnis—konfigurasikan jadwal.

Tetapkan jendela waktu

SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`<start>,<end>`;
ParameterDeskripsiRentang valid
startAwal jendela penjadwalan (jam)0–24
endAkhir jendela penjadwalan (jam)0–24

Pisahkan beberapa jendela waktu dengan titik koma. Lampirkan semua nilai dalam backtick.

Penting

Jendela waktu mengontrol kapan pekerjaan *dijadwalkan*, bukan kapan pekerjaan selesai. Pekerjaan yang dijadwalkan sebelum jendela ditutup dapat terus berjalan setelah jendela berakhir.

Contoh: Jadwalkan pekerjaan BUILD antara pukul 00.00–06.59 dan 18.00–22.59.

SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`0,6;18,22`;

Tetapkan prioritas penjadwalan

Tersedia untuk kluster AnalyticDB for MySQL yang menjalankan V3.1.5.0 atau lebih baru.

Secara default, pekerjaan BUILD diprioritaskan berdasarkan volume data yang ditambahkan ke setiap shard sejak pekerjaan BUILD terakhir—shard dengan lebih banyak data baru dijadwalkan terlebih dahulu. Untuk mengganti perilaku ini, tetapkan prioritas khusus menggunakan hint atau SET ADB_CONFIG.

Parameter task_priority adalah bilangan bulat (default: 0). Nilai yang lebih tinggi berarti prioritas lebih tinggi. Mengatur nilai negatif akan menonaktifkan penjadwalan otomatis untuk tabel tersebut.

Catatan

Untuk melihat atau memperbarui versi minor Kluster Anda, masuk ke Konsol AnalyticDB for MySQL, lalu buka bagian Configuration Information pada halaman Cluster Information.

Gunakan hint (berlaku untuk satu tabel, hanya untuk pekerjaan saat ini)

/*build_task_priority = <task_priority> */ BUILD TABLE <db_name>.<table_name>;

Contoh: Tetapkan prioritas 30 untuk tabel test dalam database adb_demo.

/*build_task_priority = 30 */ Build TABLE adb_demo.test;

Gunakan SET ADB_CONFIG (persisten, mendukung beberapa tabel)

  • Tetapkan prioritas untuk beberapa tabel di berbagai database:

    SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.<table1_name>.<task_priority>;<db2_name>.<table2_name>.<task_priority>`;

    Contoh: Prioritas 30 untuk adb_demo1.test1, prioritas 10 untuk adb_demo2.test2.

    SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.test1.30;adb_demo2.test2.10`;
  • Tetapkan prioritas yang sama untuk semua tabel dalam satu database:

    SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.*.<task_priority>`;

    Contoh: Prioritas 30 untuk semua tabel dalam adb_demo1.

    SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.*.30`;
  • Tetapkan prioritas berbeda antara satu tabel dan sisanya dalam satu database:

    SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.*.<task_priority>;<db1_name>.<table_name>.<task_priority>`;

    Contoh: Prioritas 30 untuk adb_demo1.test1, prioritas 10 untuk semua tabel lain dalam adb_demo1.

    SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.*.10;adb_demo1.test1.30`;

Jika hint dan SET ADB_CONFIG dikonfigurasi untuk tabel yang sama, hint memiliki prioritas lebih tinggi untuk pekerjaan saat ini.

Untuk memeriksa konfigurasi prioritas saat ini, jalankan SHOW ADB_CONFIG.

Memantau status pekerjaan BUILD

Kueri status pekerjaan BUILD selama tiga hari terakhir:

SELECT table_name, schema_name, status
FROM INFORMATION_SCHEMA.KEPLER_META_BUILD_TASK
ORDER BY create_time DESC
LIMIT 10;
StatusDeskripsi
INITPekerjaan sedang diinisialisasi.
RUNNINGPekerjaan sedang berjalan.
FINISHPekerjaan selesai.

FAQ

Penjadwalan otomatis tidak berlaku

Parameter waktu dalam SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD harus dilampirkan dalam backtick. Tanpa backtick, nilai-nilai tersebut gagal diurai dan penjadwalan diabaikan.

Sintaksis yang benar:

SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`0,6`;

Ini menjadwalkan pekerjaan BUILD antara pukul 00.00 dan 06.59.