ALTER PLACEMENT POLICY
ALTER PLACEMENT POLICY 用于修改已创建的放置策略。此修改会自动更新至所有使用这些放置策略的表和分区。
ALTER PLACEMENT POLICY 会完全替换之前定义的规则,而不会和之前的规则合并,比如在下面的例子中,FOLLOWERS=4 就被 ALTER PLACEMENT POLICY 语句覆盖了:
1. CREATE PLACEMENT POLICY p1 FOLLOWERS=4;
2. ALTER PLACEMENT POLICY p1 PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-west-1";
语法图
AlterPolicyStmt

PolicyName

PlacementOptionList

PlacementOption

CommonPlacementOption

SugarPlacementOption

AdvancedPlacementOption

1. AlterPolicyStmt ::=
2. "ALTER" "PLACEMENT" "POLICY" IfExists PolicyName PlacementOptionList
4. PolicyName ::=
5. Identifier
7. PlacementOptionList ::=
8. PlacementOption
9. | PlacementOptionList PlacementOption
10. | PlacementOptionList ',' PlacementOption
12. PlacementOption ::=
13. CommonPlacementOption
14. | SugarPlacementOption
15. | AdvancedPlacementOption
17. CommonPlacementOption ::=
18. "FOLLOWERS" EqOpt LengthNum
20. SugarPlacementOption ::=
21. "PRIMARY_REGION" EqOpt stringLit
22. | "REGIONS" EqOpt stringLit
23. | "SCHEDULE" EqOpt stringLit
25. AdvancedPlacementOption ::=
26. "LEARNERS" EqOpt LengthNum
27. | "CONSTRAINTS" EqOpt stringLit
28. | "LEADER_CONSTRAINTS" EqOpt stringLit
29. | "FOLLOWER_CONSTRAINTS" EqOpt stringLit
30. | "LEARNER_CONSTRAINTS" EqOpt stringLit
示例

注意
如要查看所在集群中可用的区域,见 SHOW PLACEMENT LABELS。如果未看到任何可用的区域,此 TiKV 集群在部署时可能未正确设置标签 (label)。
1. CREATE PLACEMENT POLICY p1 PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-west-1";
2. CREATE TABLE t1 (i INT) PLACEMENT POLICY=p1; -- 绑定放置策略 p1 到表 t1。
3. ALTER PLACEMENT POLICY p1 PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-west-1,us-west-2" FOLLOWERS=4; -- t1 上的放置规则会自动更新。
4. SHOW CREATE PLACEMENT POLICY p1\G;
1. Query OK, 0 rows affected (0.08 sec)
3. Query OK, 0 rows affected (0.10 sec)
5. ***************************[ 1. row ]***************************
6. Policy | p1
7. Create Policy | CREATE PLACEMENT POLICY `p1` PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-west-1,us-west-2" FOLLOWERS=4
8. 1 row in set (0.00 sec)
MySQL 兼容性
该语句是 TiDB 对 MySQL 语法的扩展。
