DISTRIBUTE TABLEバージョン8.5.4の新機能
DISTRIBUTE TABLE文は、指定されたテーブルのリージョンを再配分および再スケジュールし、テーブルレベルでバランスの取れた配分を実現します。この文を実行することで、リージョンが少数のTiFlashノードまたは TiKV ノードに集中するのを防ぎ、テーブル内のリージョンの不均一な配分の問題に対処できます。
概要
- DistributeTableStmt
- TableName
- PartitionNameList
DistributeTableStmt ::=
"DISTRIBUTE" "TABLE" TableName PartitionNameListOpt "RULE" EqOrAssignmentEq Identifier "ENGINE" EqOrAssignmentEq Identifier "TIMEOUT" EqOrAssignmentEq Identifier
TableName ::=
(SchemaName ".")? Identifier
PartitionNameList ::=
"PARTITION" "(" PartitionName ("," PartitionName)* ")"
パラメータの説明
DISTRIBUTE TABLEステートメントを使用してテーブル内のリージョンを再配分する場合、バランスの取れた配分のためにstorageエンジン ( TiFlashや TiKV など) とさまざまなRaftロール ( Leader、 Learner、 Voter など) を指定できます。
RULE: どのRaftロールのリージョンをバランス調整およびスケジュールするかを指定します。オプションの値は"leader-scatter"、"peer-scatter"、"learner-scatter"です。ENGINE:storageエンジンを指定します。オプションの値は"tikv"と"tiflash"です。TIMEOUT: スキャッタ処理のタイムアウト制限を指定します。PDがこの時間内にスキャッタ処理を完了しない場合、スキャッタタスクは自動的に終了します。このパラメータが指定されていない場合、デフォルト値は"30m"です。
例
表t1のリーダーの地域をTiKVに再分配します。
CREATE TABLE t1 (a INT);
...
DISTRIBUTE TABLE t1 RULE = "leader-scatter" ENGINE = "tikv" TIMEOUT = "1h";
+--------+
| JOB_ID |
+--------+
| 100 |
+--------+
表t2の学習者の領域をTiFlashに再分配します。
CREATE TABLE t2 (a INT);
...
DISTRIBUTE TABLE t2 RULE = "learner-scatter" ENGINE = "tiflash";
+--------+
| JOB_ID |
+--------+
| 101 |
+--------+
テーブルt3のp1とp2のパーティション内のピアのリージョンを TiKV で再配布します。
CREATE TABLE t3 ( a INT, b INT, INDEX idx(b)) PARTITION BY RANGE( a ) (
PARTITION p1 VALUES LESS THAN (10000),
PARTITION p2 VALUES LESS THAN (20000),
PARTITION p3 VALUES LESS THAN (MAXVALUE) );
...
DISTRIBUTE TABLE t3 PARTITION (p1, p2) RULE = "peer-scatter" ENGINE = "tikv";
+--------+
| JOB_ID |
+--------+
| 102 |
+--------+
Learnerの領域をTiFlash上のテーブルt4のp1番目とp2パーティションに再分配します。
CREATE TABLE t4 ( a INT, b INT, INDEX idx(b)) PARTITION BY RANGE( a ) (
PARTITION p1 VALUES LESS THAN (10000),
PARTITION p2 VALUES LESS THAN (20000),
PARTITION p3 VALUES LESS THAN (MAXVALUE) );
...
DISTRIBUTE TABLE t4 PARTITION (p1, p2) RULE = "learner-scatter" ENGINE="tiflash";
+--------+
| JOB_ID |
+--------+
| 103 |
+--------+
注記
テーブルのリージョンを再配分するリージョンDISTRIBUTE TABLEを実行すると、PD ホットスポット スケジューラの影響を受ける可能性があります。再配分後、このテーブルのリージョン配分は時間の経過とともに再び不均衡になる可能性があります。
MySQLの互換性
このステートメントは、MySQL 構文に対する TiDB 拡張です。