产品概述
基本概念
集群架构
产品优势
应用场景
+----------+| Load Job |+----+-----+|| Load job generates both origin and new index data|| +------------------+ +---------------+| | Origin Index | | Origin Index |+------> New Incoming Data| | History Data || +------------------+ +------+--------+| || | Convert history data| || +------------------+ +------v--------+| | New Index | | New Index |+------> New Incoming Data| | History Data |+------------------+ +---------------+
HELP ALTER TABLE 中 Schema Change 部分的说明。
Schema Change 的创建是一个异步过程,作业提交成功后,用户需要通过 SHOW ALTER TABLE COLUMN 命令来查看作业进度。SHOW ALTER TABLE COLUMN 可以查看当前正在执行或已经完成的 Schema Change 作业。当一次 Schema Change 作业涉及到多个 Index 时,该命令会显示多行,每行对应一个 Index。举例如下:JobId: 20021TableName: tbl1CreateTime: 2019-08-05 23:03:13FinishTime: 2019-08-05 23:03:42IndexName: tbl1IndexId: 20022OriginIndexId: 20017SchemaVersion: 2:792557838TransactionId: 10023State: FINISHEDMsg:Progress: N/ATimeout: 86400
CANCEL ALTER TABLE COLUMN FROM tbl_name;+-----------+-------+------+------+------+---------+-------+| IndexName | Field | Type | Null | Key | Default | Extra |+-----------+-------+------+------+------+---------+-------+| tbl1 | k1 | INT | No | true | N/A | || | k2 | INT | No | true | N/A | || | k3 | INT | No | true | N/A | || | | | | | | || rollup2 | k2 | INT | No | true | N/A | || | | | | | | || rollup1 | k1 | INT | No | true | N/A | || | k2 | INT | No | true | N/A | |+-----------+-------+------+------+------+---------+-------+
ALTER TABLE tbl1ADD COLUMN k4 INT default "1" to rollup1,ADD COLUMN k4 INT default "1" to rollup2,ADD COLUMN k5 INT default "1" to rollup2;
+-----------+-------+------+------+------+---------+-------+| IndexName | Field | Type | Null | Key | Default | Extra |+-----------+-------+------+------+------+---------+-------+| tbl1 | k1 | INT | No | true | N/A | || | k2 | INT | No | true | N/A | || | k3 | INT | No | true | N/A | || | k4 | INT | No | true | 1 | || | k5 | INT | No | true | 1 | || | | | | | | || rollup2 | k2 | INT | No | true | N/A | || | k4 | INT | No | true | 1 | || | k5 | INT | No | true | 1 | || | | | | | | || rollup1 | k1 | INT | No | true | N/A | || | k2 | INT | No | true | N/A | || | k4 | INT | No | true | 1 | |+-----------+-------+------+------+------+---------+-------+
k1 INT SUM NULL DEFAULT "1" 类型为 BIGINT,则需执行命令如下:
ALTER TABLE tbl1 MODIFY COLUMN k1 BIGINT SUM NULL DEFAULT "1";Table xxx is not stable. ...。
Schema Change 只有在表数据完整且非均衡状态下才可以开始。如果表的某些数据分片副本不完整,或者某些副本正在进行均衡操作,则提交会被拒绝。ADMIN SHOW REPLICA STATUS FROM tbl WHERE STATUS != "OK";。ADMIN REPAIR TABLE tbl1;。SHOW PROC "/cluster_balance/pending_tablets";。ADMIN SET FRONTEND CONFIG ("disable_balance" = "true");。alter_table_timeout_second:作业默认超时时间,86400 秒。alter_tablet_worker_count:在 BE 端用于执行历史数据转换的线程数。默认为 3。如果希望加快 Schema Change 作业的速度,可以适当调大这个参数后重启 BE。但过多的转换线程可能会导致 IO 压力增加,影响其他操作。该线程和 Rollup 作业共用。文档反馈