SHOW PLACEMENT FOR
警告:
Placement Rules in SQL 是 TiDB 在 v5.3.0 中引入的实验特性,其语法在 GA 前可能会发生变化,还可能存在 bug。如果你知晓潜在的风险,可通过执行
SET GLOBAL tidb_enable_alter_placement = 1;来开启该实验特性。
SHOW PLACEMENT FOR 用于汇总直接放置 (direct placement) 和放置策略 (placement policy) 中所有的放置选项,并为特定表、数据库或分区以规范形式呈现这些选项信息。
语法图
1. ShowStmt ::=
2. "PLACEMENT" "FOR" ShowPlacementTarget
4. ShowPlacementTarget ::=
5. DatabaseSym DBName
6. | "TABLE" TableName
7. | "TABLE" TableName "PARTITION" Identifier
示例
1. CREATE PLACEMENT POLICY p1 PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-west-1" FOLLOWERS=4;
2. use test;
3. ALTER DATABASE test PLACEMENT POLICY=p1;
4. CREATE TABLE t1 (a INT);
5. CREATE TABLE t2 (a INT) PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-west-1" FOLLOWERS=4;
6. SHOW PLACEMENT FOR DATABASE test;
7. SHOW PLACEMENT FOR TABLE t1;
8. SHOW CREATE TABLE t1\G
9. SHOW PLACEMENT FOR TABLE t2;
10. CREATE TABLE t3 (a INT) PARTITION BY RANGE (a) (PARTITION p1 VALUES LESS THAN (10), PARTITION p2 VALUES LESS THAN (20) FOLLOWERS=4);
11. SHOW PLACEMENT FOR TABLE t3 PARTITION p1;
12. SHOW PLACEMENT FOR TABLE t3 PARTITION p2;
1. Query OK, 0 rows affected (0.02 sec)
3. Query OK, 0 rows affected (0.00 sec)
5. Query OK, 0 rows affected (0.00 sec)
7. Query OK, 0 rows affected (0.01 sec)
9. +---------------+----------------------------------------------------------------------+------------------+
10. | Target | Placement | Scheduling_State |
11. +---------------+----------------------------------------------------------------------+------------------+
12. | DATABASE test | PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-west-1" FOLLOWERS=4 | INPROGRESS |
13. +---------------+----------------------------------------------------------------------+------------------+
14. 1 row in set (0.00 sec)
16. +---------------+-------------+------------------+
17. | Target | Placement | Scheduling_State |
18. +---------------+-------------+------------------+
19. | TABLE test.t1 | FOLLOWERS=4 | INPROGRESS |
20. +---------------+-------------+------------------+
21. 1 row in set (0.00 sec)
23. *************************** 1. row ***************************
24. Table: t1
25. Create Table: CREATE TABLE `t1` (
26. `a` int(11) DEFAULT NULL
27. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`p1` */
28. 1 row in set (0.00 sec)
30. +---------------+----------------------------------------------------------------------+------------------+
31. | Target | Placement | Scheduling_State |
32. +---------------+----------------------------------------------------------------------+------------------+
33. | TABLE test.t2 | PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-west-1" FOLLOWERS=4 | INPROGRESS |
34. +---------------+----------------------------------------------------------------------+------------------+
35. 1 row in set (0.00 sec)
37. Query OK, 0 rows affected (0.14 sec)
39. +----------------------------+-----------------------------------------------------------------------+------------------+
40. | Target | Placement | Scheduling_State |
41. +----------------------------+-----------------------------------------------------------------------+------------------+
42. | TABLE test.t3 PARTITION p1 | PRIMARY_REGION="us-east-1" REGIONS="us-east-1,,us-west-1" FOLLOWERS=4 | INPROGRESS |
43. +----------------------------+-----------------------------------------------------------------------+------------------+
44. 1 row in set (0.00 sec)
46. +----------------------------+-------------+------------------+
47. | Target | Placement | Scheduling_State |
48. +----------------------------+-------------+------------------+
49. | TABLE test.t3 PARTITION p2 | FOLLOWERS=4 | INPROGRESS |
50. +----------------------------+-------------+------------------+
51. 1 row in set (0.00 sec)
MySQL 兼容性
该语句是 TiDB 对 MySQL 语法的扩展。
