BUILD
BUILD任務用于將實時寫入的數(shù)據(jù)轉(zhuǎn)換為歷史數(shù)據(jù)格式。在該過程中會構(gòu)建索引、清理冗余數(shù)據(jù)、執(zhí)行異步DDL任務等,將數(shù)據(jù)從寫優(yōu)化轉(zhuǎn)變?yōu)樽x優(yōu)化。
注意事項
BUILD期間,不能執(zhí)行INSERT OVERWRITE SELECT
導入任務,需等待BUILD任務結(jié)束才能執(zhí)行。
功能說明
BUILD
命令可以對實時寫入的數(shù)據(jù)及其涉及到的歷史分區(qū),進行合并、構(gòu)建索引、執(zhí)行異步DDL等操作。如果用戶通過INSERT/UPDATE/DELETE等修改分區(qū)的數(shù)據(jù),那么該分區(qū)需要執(zhí)行BUILD,與實時數(shù)據(jù)結(jié)合后,生成新的分區(qū)。如果用戶沒有修改分區(qū)的數(shù)據(jù),則該分區(qū)不會被BUILD任務修改。
BUILD任務開始后,不能停止任務。
當前BUILD任務是以表為粒度進行調(diào)度的。BUILD任務開始執(zhí)行后,表級的BUILD任務會切分為以Shard為粒度的BUILD子任務,每個Shard的3個副本都有一個BUILD子任務,當所有的子任務都執(zhí)行完成后,BUILD任務完成。不同表的BUILD任務可以并行執(zhí)行,并行度默認為3。
自動觸發(fā)BUILD任務
自動觸發(fā)BUILD任務需要滿足以下其中一個條件:
達到最小BUILD時間間隔(數(shù)倉版預留模式:0.5小時,數(shù)倉版彈性模式:1.5小時,湖倉版:1.5小時),且單表的某個一級分區(qū)滿足新增數(shù)據(jù)達到5萬條。
距離上次BUILD,時間已過去24小時且至少修改1行數(shù)據(jù)。
手動觸發(fā)BUILD任務
可通過以下方式手動觸發(fā)BUILD任務:
BUILD
BUILD TABLE <table_name>;
只會對變動的分區(qū)進行BUILD。
強制全表BUILD
BUILD TABLE <table_name> force = true;
對表的所有分區(qū)進行強制BUILD。
指定分區(qū)BUILD
BUILD TABLE test force=true partitions='partition1,partition2';
重要僅3.1.6.0及以上版本的集群支持指定分區(qū)BUILD。如何查看集群內(nèi)核版本,請參見如何查看實例版本信息。如需升級內(nèi)核版本,請聯(lián)系技術(shù)支持。
當表較大時,
BUILD TABLE <table_name> force = true;
的執(zhí)行時間會很長。AnalyticDB for MySQL支持通過partition
指定需要BUILD的分區(qū),減少長時間的BUILD資源占用,盡快完成BUILD任務。
配置BUILD自動調(diào)度時間
配置方法
SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`<start>,<end>`;
start
和end
取0~24之間的整數(shù),表示在start~end整點時間段內(nèi)可以調(diào)度BUILD任務。可以配置多個時間段,以英文分號(;)隔開。重要該配置只限制任務調(diào)度時間段,不限任務執(zhí)行時間段。即某任務在該時間內(nèi)調(diào)度,會出現(xiàn)因執(zhí)行時間較長,超出該時間段的情況。
示例
配置0~6點和18~24點調(diào)度BUILD任務。
SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`0,6;18,24`;
配置BUILD調(diào)度優(yōu)先級
BUILD調(diào)度是按照單表某個一級分區(qū)新增數(shù)據(jù)量排序下發(fā)任務,新增數(shù)據(jù)量大的分區(qū)先下發(fā)任務,根據(jù)下發(fā)時間的先后排序執(zhí)行任務。當需要按業(yè)務緊急程度調(diào)度BUILD任務時,可以通過Hint或者SET ADB_CONFIG
調(diào)整單表或多表BUILD調(diào)度的優(yōu)先級。
僅3.1.5.0及以上版本的集群支持配置BUILD調(diào)度的優(yōu)先級。如何查看集群內(nèi)核版本,請參見如何查看實例版本信息。如需升級內(nèi)核版本,請聯(lián)系技術(shù)支持。
Hint僅支持對單張表配置優(yōu)先級,且調(diào)度優(yōu)先級僅針對當前提交的任務生效。
SET ADB_CONFIG
既支持對單張表配置優(yōu)先級,也支持對多張表配置優(yōu)先級,且優(yōu)先級一直生效,直至再次配置該表優(yōu)先級時,才會改變。如果同時使用Hint和
SET ADB_CONFIG
為同一個表配置了不同的優(yōu)先級,在當前提交的任務中,該表的BUILD調(diào)度優(yōu)先級采納Hint方式配置的優(yōu)先級。
BUILD調(diào)度的優(yōu)先級由參數(shù)task_priority
控制,取值為整數(shù),默認值為30。數(shù)值越大,下發(fā)調(diào)度的優(yōu)先級越高。配置優(yōu)先級后,前端節(jié)點在調(diào)度BUILD任務時會自動加上優(yōu)先級。若task_priority
取值小于0,則表示關(guān)閉該表自動調(diào)度BUILD任務,前端節(jié)點不再對該表發(fā)起B(yǎng)UILD任務。
配置方法如下:
通過Hint配置BUILD調(diào)度的優(yōu)先級
/*+ build_task_priority = <task_priority> */ BUILD TABLE <db_name>.<table_name>;
例如,配置數(shù)據(jù)庫
adb_demo
中表test
的BUILD調(diào)度優(yōu)先級為30。/*+ build_task_priority = 30 */ Build TABLE adb_demo.test;
通過Config配置BUILD調(diào)度的優(yōu)先級
配置不同數(shù)據(jù)庫中多張表的BUILD調(diào)度優(yōu)先級:
SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.<table1_name>.<task_priority>;<db2_name>.<table2_name>.<task_priority>`;
說明不同的表使用英文分號(;)隔開。
例如,配置數(shù)據(jù)庫
adb_demo1
中表test1
的BUILD調(diào)度優(yōu)先級為30,數(shù)據(jù)庫adb_demo2
中表test2
的BUILD調(diào)度優(yōu)先級為10。SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.test1.30;adb_demo2.test2.10`;
配置同一數(shù)據(jù)庫的所有表具有相同的BUILD調(diào)度優(yōu)先級:
SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.*.<task_priority>`;
例如,配置數(shù)據(jù)庫
adb_demo1
中所有表的BUILD調(diào)度優(yōu)先級均為30。SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.*.30`;
配置同一數(shù)據(jù)庫中某張表與其他表具有不同的BUILD調(diào)度優(yōu)先級:
SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.*.<task_priority>;<db1_name>.<table_name>.<task_priority>`;
例如,配置數(shù)據(jù)庫
adb_demo1
中test1
表的BUILD調(diào)度優(yōu)先級為30,其他所有表的調(diào)度優(yōu)先級為10。SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.*.10;adb_demo1.test1.30`;
您可以通過SHOW ADB_CONFIG查看表當前BUILD調(diào)度的優(yōu)先級。
查看BUILD任務的狀態(tài)
自動或手動觸發(fā)BUILD任務后,執(zhí)行如下SQL,查看最近3天BUILD任務的狀態(tài)。
SELECT table_name, schema_name, status FROM INFORMATION_SCHEMA.KEPLER_META_BUILD_TASK ORDER BY create_time DESC LIMIT 10;
根據(jù)status
的值,判斷BUILD任務狀態(tài)。狀態(tài)說明如下。
| 說明 |
INIT | 任務初始化。 |
RUNNING | 任務運行中。 |
FINISH | 任務已完成。 |