CREATE PLACEMENT POLICY

CREATE PLACEMENT POLICY 用于创建命名的放置策略,随后可以将该策略分配给表、分区或数据库。

语法图

  1. CreatePolicyStmt ::=
  2. "CREATE" "PLACEMENT" "POLICY" IfNotExists PolicyName PlacementOptionList
  3. PolicyName ::=
  4. Identifier
  5. PlacementOptionList ::=
  6. PlacementOption
  7. | PlacementOptionList PlacementOption
  8. | PlacementOptionList ',' PlacementOption
  9. PlacementOption ::=
  10. CommonPlacementOption
  11. | SugarPlacementOption
  12. | AdvancedPlacementOption
  13. CommonPlacementOption ::=
  14. "FOLLOWERS" EqOpt LengthNum
  15. SugarPlacementOption ::=
  16. "PRIMARY_REGION" EqOpt stringLit
  17. | "REGIONS" EqOpt stringLit
  18. | "SCHEDULE" EqOpt stringLit
  19. AdvancedPlacementOption ::=
  20. "LEARNERS" EqOpt LengthNum
  21. | "CONSTRAINTS" EqOpt stringLit
  22. | "LEADER_CONSTRAINTS" EqOpt stringLit
  23. | "FOLLOWER_CONSTRAINTS" EqOpt stringLit
  24. | "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" FOLLOWERS=4;
  2. CREATE TABLE t1 (a INT) PLACEMENT POLICY=p1;
  3. SHOW CREATE PLACEMENT POLICY p1;
  1. Query OK, 0 rows affected (0.08 sec)
  2. Query OK, 0 rows affected (0.10 sec)
  3. +--------+---------------------------------------------------------------------------------------------------+
  4. | Policy | Create Policy |
  5. +--------+---------------------------------------------------------------------------------------------------+
  6. | p1 | CREATE PLACEMENT POLICY `p1` PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-west-1" FOLLOWERS=4 |
  7. +--------+---------------------------------------------------------------------------------------------------+
  8. 1 row in set (0.00 sec)

MySQL 兼容性

该语句是 TiDB 对 MySQL 语法的扩展。

另请参阅