From e4e6bbe3e46a9d0d3c90ef213103d7a15752eab9 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Tue, 9 Nov 2021 11:28:06 +0800 Subject: [PATCH 01/12] Refine placement rules in sql --- TOC.md | 3 +++ placement-rules-in-sql.md | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/TOC.md b/TOC.md index 19b052c5e6103..1105f762d1dbb 100644 --- a/TOC.md +++ b/TOC.md @@ -304,6 +304,7 @@ + [`DROP COLUMN`](/sql-statements/sql-statement-drop-column.md) + [`DROP DATABASE`](/sql-statements/sql-statement-drop-database.md) + [`DROP INDEX`](/sql-statements/sql-statement-drop-index.md) + + [`DROP PLACEMENT POLICY`](/sql-statements/sql-statement-drop-placement-policy.md) + [`DROP ROLE`](/sql-statements/sql-statement-drop-role.md) + [`DROP SEQUENCE`](/sql-statements/sql-statement-drop-sequence.md) + [`DROP STATS`](/sql-statements/sql-statement-drop-stats.md) @@ -364,6 +365,7 @@ + [`SHOW MASTER STATUS`](/sql-statements/sql-statement-show-master-status.md) + [`SHOW PLACEMENT`](/sql-statements/sql-statement-show-placement.md) + [`SHOW PLACEMENT FOR`](/sql-statements/sql-statement-show-placement-for.md) + + [`SHOW PLACEMENT LABELS`](sql-statements/sql-statement-show-placement-labels.md) + [`SHOW PLUGINS`](/sql-statements/sql-statement-show-plugins.md) + [`SHOW PRIVILEGES`](/sql-statements/sql-statement-show-privileges.md) + [`SHOW [FULL] PROCESSSLIST`](/sql-statements/sql-statement-show-processlist.md) @@ -461,6 +463,7 @@ + [`METRICS_SUMMARY`](/information-schema/information-schema-metrics-summary.md) + [`METRICS_TABLES`](/information-schema/information-schema-metrics-tables.md) + [`PARTITIONS`](/information-schema/information-schema-partitions.md) + + [`PLACEMENT_RULES`](/information-schema/information-schema-placement-rules.md) + [`PROCESSLIST`](/information-schema/information-schema-processlist.md) + [`REFERENTIAL_CONSTRAINTS`](/information-schema/information-schema-referential-constraints.md) + [`SCHEMATA`](/information-schema/information-schema-schemata.md) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index 3cbee7d70ecc6..f3dabc35b6768 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -59,7 +59,7 @@ If you use direct placement options, you have to alter rules for each object (fo In addition to the placement options above, you can also use the advance configurations. For details, see [Advance placement](#advanced-placement). | Option Name | Description | -|----------------------------|------------------------------------------------------------------------------------------------| +| --------------| ------------ | | `CONSTRAINTS` | A list of constraints that apply to all roles. For example, `CONSTRAINTS="[+disk=ssd]`. | | `FOLLOWER_CONSTRAINTS` | A list of constraints that only apply to followers. | @@ -164,6 +164,6 @@ The following known limitations exist in the experimental release of Placement R * Dumpling does not support dumping placement policies. See [issue #29371](https://github.com/pingcap/tidb/issues/29371). * TiDB tools, including Backup & Restore (BR), TiCDC, TiDB Lightning, and TiDB Data Migration (DM), do not yet support placement rules. * Temporary tables do not support placement options (either via direct placement or placement policies). -* Syntactic sugar rules exist for setting `PRIMARY_REGION` and `REGIONS`, but in future we plan to add varieties for `PRIMARY_RACK`, `PRIMARY_ZONE` and `PRIMARY_HOST`. See [issue #18030](https://github.com/pingcap/tidb/issues/18030) +* Syntactic sugar rules are permitted for setting `PRIMARY_REGION` and `REGIONS`. but in the future, we plan to add varieties for `PRIMARY_RACK`, `PRIMARY_ZONE`, and `PRIMARY_HOST`. See [issue #18030](https://github.com/pingcap/tidb/issues/18030). * TiFlash learners are not configurable through Placement Rules syntax. * Placement rules only ensure that data at rest resides on the correct TiKV store. The rules do not guarantee that data in transit (via either user-queries or internal operations) only occurs in a specific region. From eda8b749f9be7b56409c29a7b8289de03b1778ea Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Tue, 9 Nov 2021 11:52:50 +0800 Subject: [PATCH 02/12] Update placement-rules-in-sql.md --- placement-rules-in-sql.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index f3dabc35b6768..476535ee0ca91 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -1,6 +1,6 @@ --- title: Placement Rules in SQL -summary: Learn how to schedule placement of tables and partitions. +summary: Learn how to schedule placement of tables and partitions using SQL statements. --- # Placement Rules in SQL From 9759f28c566cb63466e2e934ad8cba93d3a29a06 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Tue, 9 Nov 2021 11:58:36 +0800 Subject: [PATCH 03/12] Update placement-rules-in-sql.md --- placement-rules-in-sql.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index 476535ee0ca91..2d24c9d59394e 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -7,7 +7,7 @@ summary: Learn how to schedule placement of tables and partitions using SQL stat > **Warning:** > -> Placement Rules in SQL is an experimental feature. The syntax might change before its GA, and there might also be bugs. +> Placement Rules in SQL is an experimental feature introduced in v5.3.0. The syntax might change before its GA, and there might also be bugs. > > If you understand the risks, you can enable this experiment feature by executing `SET GLOBAL tidb_enable_alter_placement = 1;`. From b97496190df0b91971f3f755847309d2259c126b Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Tue, 9 Nov 2021 15:23:30 +0800 Subject: [PATCH 04/12] Update placement-rules-in-sql.md --- placement-rules-in-sql.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index 2d24c9d59394e..4abf525582d11 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -7,11 +7,9 @@ summary: Learn how to schedule placement of tables and partitions using SQL stat > **Warning:** > -> Placement Rules in SQL is an experimental feature introduced in v5.3.0. The syntax might change before its GA, and there might also be bugs. -> -> If you understand the risks, you can enable this experiment feature by executing `SET GLOBAL tidb_enable_alter_placement = 1;`. +> Placement Rules in SQL is an experimental feature introduced in v5.3.0. The syntax might change before its GA, and there might also be bugs. If you understand the risks, you can enable this experiment feature by executing `SET GLOBAL tidb_enable_alter_placement = 1;`. -Placement Rules allow you to configure where data will be stored in a TiKV cluster. This is useful for scenarios including optimizing a high availability strategy, ensuring that local copies of data will be available for local stale reads, and adhering to compliance requirements. +Placement Rules in SQL allow you to configure where data will be stored in a TiKV cluster. This is useful for scenarios including optimizing a high availability strategy, ensuring that local copies of data will be available for local stale reads, and adhering to compliance requirements. ## Specify placement options @@ -83,9 +81,9 @@ CREATE PLACEMENT POLICY eastandwest PRIMARY_REGION="us-east-1" REGIONS="us-east- CREATE TABLE t1 (a INT) PLACEMENT POLICY=eastandwest; ``` -The `SCHEDULE` option instructs TiDB on how to balance the followers. +The `SCHEDULE` option instructs TiDB on how to balance the followers. The default schedule of `EVEN` ensures a balance of followers in all regions. -The default schedule of `EVEN` ensures a balance of followers in all regions. You can use the `MAJORITY_IN_PRIMARY` schedule to ensure that enough followers are placed in the primary region (`us-east-1`) so that quorum can be achieved. If the primary region completely fails, you can the `MAJORITY_IN_PRIMARY` schedule for lower latency transactions at the expense of availability. +To ensure that enough followers are placed in the primary region (`us-east-1`) so that quorum can be achieved, you can use the `MAJORITY_IN_PRIMARY` schedule If the primary region completely fails, you can the `MAJORITY_IN_PRIMARY` schedule for lower latency transactions at the expense of availability. ### Assign placement to a partitioned table @@ -153,7 +151,7 @@ PARTITION BY RANGE( YEAR(purchased) ) ( You can either specify constraints in list format (`[+disk=ssd]`) or in dictionary format (`{+disk=ssd:1,+disk=hdd:2}`). -In list format, constraints are specified as a list of key-value pairs. The key starts with either a `+` or a `-` with `+disk=ssd` indicating that the label `disk` must be set to `ssd`, and `-disk=hdd`, indicating that the label `disk` must not be `hdd`. +In list format, constraints are specified as a list of key-value pairs. The key starts with either a `+` or a `-`. `+disk=ssd` indicates that the label `disk` must be set to `ssd`, and `-disk=hdd` indicates that the label `disk` must not be `hdd`. In dictionary format, constraints also indicate a number of instances that apply to that rule. For example `FOLLOWER_CONSTRAINTS="{+region=us-east-1:1,+region=us-east-2:1,+region=us-west-1:1,+any:1}";` indicates that 1 follower is in us-east-1, 1 follower is in us-east-2, 1 follower is in us-west-1, and 1 follower can be in any region. @@ -166,4 +164,4 @@ The following known limitations exist in the experimental release of Placement R * Temporary tables do not support placement options (either via direct placement or placement policies). * Syntactic sugar rules are permitted for setting `PRIMARY_REGION` and `REGIONS`. but in the future, we plan to add varieties for `PRIMARY_RACK`, `PRIMARY_ZONE`, and `PRIMARY_HOST`. See [issue #18030](https://github.com/pingcap/tidb/issues/18030). * TiFlash learners are not configurable through Placement Rules syntax. -* Placement rules only ensure that data at rest resides on the correct TiKV store. The rules do not guarantee that data in transit (via either user-queries or internal operations) only occurs in a specific region. +* Placement rules only ensure that data at rest resides on the correct TiKV store. The rules do not guarantee that data in transit (via either user queries or internal operations) only occurs in a specific region. From fb91a5e07ecb685327256505b519aa366a2154c1 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Tue, 9 Nov 2021 15:24:08 +0800 Subject: [PATCH 05/12] Update TOC.md --- TOC.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TOC.md b/TOC.md index 1105f762d1dbb..6764b96b89e6b 100644 --- a/TOC.md +++ b/TOC.md @@ -365,7 +365,7 @@ + [`SHOW MASTER STATUS`](/sql-statements/sql-statement-show-master-status.md) + [`SHOW PLACEMENT`](/sql-statements/sql-statement-show-placement.md) + [`SHOW PLACEMENT FOR`](/sql-statements/sql-statement-show-placement-for.md) - + [`SHOW PLACEMENT LABELS`](sql-statements/sql-statement-show-placement-labels.md) + + [`SHOW PLACEMENT LABELS`](/sql-statements/sql-statement-show-placement-labels.md) + [`SHOW PLUGINS`](/sql-statements/sql-statement-show-plugins.md) + [`SHOW PRIVILEGES`](/sql-statements/sql-statement-show-privileges.md) + [`SHOW [FULL] PROCESSSLIST`](/sql-statements/sql-statement-show-processlist.md) From b95d6122209bc9cfef55fe7c60fd7afe3a59aa8d Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Wed, 10 Nov 2021 14:29:50 +0800 Subject: [PATCH 06/12] add user scenarios based on release notes provided by PM --- placement-rules-in-sql.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index 4abf525582d11..3c1280b0f954b 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -9,7 +9,16 @@ summary: Learn how to schedule placement of tables and partitions using SQL stat > > Placement Rules in SQL is an experimental feature introduced in v5.3.0. The syntax might change before its GA, and there might also be bugs. If you understand the risks, you can enable this experiment feature by executing `SET GLOBAL tidb_enable_alter_placement = 1;`. -Placement Rules in SQL allow you to configure where data will be stored in a TiKV cluster. This is useful for scenarios including optimizing a high availability strategy, ensuring that local copies of data will be available for local stale reads, and adhering to compliance requirements. +Placement Rules in SQL is a feature that enables you to specify where data is store in a TiKV cluster using SQL interfaces. Using this feature, consecutive data is scheduled to a specific regions, data centers, racks, or hosts, with a specified replica count. This is useful for scenarios including optimizing a high availability strategy with lower cost, ensuring that local replicas of data are available for local stale reads, and adhering to compliance requirements. + +The detailed user scenarios are as follows: + +- Place data across regions to improve the access performance in a specific region +- Merge multiple databases of different applications to reduce the cost on database maintenance +- Increase replica count for important data to improve the application availability and data reliability +- Store new data into SSDs and store old data into HHDs to lower the cost on data archiving and storage +- Schedule the leaders of hotspot data to high-performance TiKV instances +- Separate irrelevant data to different storages to improve availability ## Specify placement options From 6f11dbad9b34eee4c25b9cb89273389afea0da08 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Mon, 15 Nov 2021 10:50:15 +0800 Subject: [PATCH 07/12] Apply suggestions from code review Co-authored-by: Morgan Tocker --- placement-rules-in-sql.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index 3c1280b0f954b..8d43118c2340e 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -9,7 +9,7 @@ summary: Learn how to schedule placement of tables and partitions using SQL stat > > Placement Rules in SQL is an experimental feature introduced in v5.3.0. The syntax might change before its GA, and there might also be bugs. If you understand the risks, you can enable this experiment feature by executing `SET GLOBAL tidb_enable_alter_placement = 1;`. -Placement Rules in SQL is a feature that enables you to specify where data is store in a TiKV cluster using SQL interfaces. Using this feature, consecutive data is scheduled to a specific regions, data centers, racks, or hosts, with a specified replica count. This is useful for scenarios including optimizing a high availability strategy with lower cost, ensuring that local replicas of data are available for local stale reads, and adhering to compliance requirements. +Placement Rules in SQL is a feature that enables you to specify where data is store in a TiKV cluster using SQL interfaces. Using this feature, tables and partitions are scheduled to a specific regions, data centers, racks, or hosts. This is useful for scenarios including optimizing a high availability strategy with lower cost, ensuring that local replicas of data are available for local stale reads, and adhering to compliance requirements. The detailed user scenarios are as follows: @@ -18,7 +18,7 @@ The detailed user scenarios are as follows: - Increase replica count for important data to improve the application availability and data reliability - Store new data into SSDs and store old data into HHDs to lower the cost on data archiving and storage - Schedule the leaders of hotspot data to high-performance TiKV instances -- Separate irrelevant data to different storages to improve availability +- Separate cold data to lower-cost storage mediums to improve cost efficiency ## Specify placement options From 680177fd42fe62cb68b82d450e5ff47ad70ed9d0 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Mon, 15 Nov 2021 10:50:23 +0800 Subject: [PATCH 08/12] Update placement-rules-in-sql.md Co-authored-by: Enwei --- placement-rules-in-sql.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index 8d43118c2340e..92c2a2fda7ed8 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -92,7 +92,7 @@ CREATE TABLE t1 (a INT) PLACEMENT POLICY=eastandwest; The `SCHEDULE` option instructs TiDB on how to balance the followers. The default schedule of `EVEN` ensures a balance of followers in all regions. -To ensure that enough followers are placed in the primary region (`us-east-1`) so that quorum can be achieved, you can use the `MAJORITY_IN_PRIMARY` schedule If the primary region completely fails, you can the `MAJORITY_IN_PRIMARY` schedule for lower latency transactions at the expense of availability. +To ensure that enough followers are placed in the primary region (`us-east-1`) so that quorum can be achieved, you can use the `MAJORITY_IN_PRIMARY` schedule. If the primary region completely fails, you can the `MAJORITY_IN_PRIMARY` schedule for lower latency transactions at the expense of availability. ### Assign placement to a partitioned table From f6fe9825385e93eb3ce37d089732c31da34c5214 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Mon, 15 Nov 2021 10:50:37 +0800 Subject: [PATCH 09/12] Update placement-rules-in-sql.md Co-authored-by: Morgan Tocker --- placement-rules-in-sql.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index 92c2a2fda7ed8..d1d952cb90308 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -171,6 +171,6 @@ The following known limitations exist in the experimental release of Placement R * Dumpling does not support dumping placement policies. See [issue #29371](https://github.com/pingcap/tidb/issues/29371). * TiDB tools, including Backup & Restore (BR), TiCDC, TiDB Lightning, and TiDB Data Migration (DM), do not yet support placement rules. * Temporary tables do not support placement options (either via direct placement or placement policies). -* Syntactic sugar rules are permitted for setting `PRIMARY_REGION` and `REGIONS`. but in the future, we plan to add varieties for `PRIMARY_RACK`, `PRIMARY_ZONE`, and `PRIMARY_HOST`. See [issue #18030](https://github.com/pingcap/tidb/issues/18030). +* Syntactic sugar rules are permitted for setting `PRIMARY_REGION` and `REGIONS`. In the future, we plan to add varieties for `PRIMARY_RACK`, `PRIMARY_ZONE`, and `PRIMARY_HOST`. See [issue #18030](https://github.com/pingcap/tidb/issues/18030). * TiFlash learners are not configurable through Placement Rules syntax. * Placement rules only ensure that data at rest resides on the correct TiKV store. The rules do not guarantee that data in transit (via either user queries or internal operations) only occurs in a specific region. From 0b25174d8225b1376caa6269a6003206129bda26 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Mon, 15 Nov 2021 10:51:34 +0800 Subject: [PATCH 10/12] Update placement-rules-in-sql.md --- placement-rules-in-sql.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index d1d952cb90308..8452b8c8c8d20 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -9,7 +9,7 @@ summary: Learn how to schedule placement of tables and partitions using SQL stat > > Placement Rules in SQL is an experimental feature introduced in v5.3.0. The syntax might change before its GA, and there might also be bugs. If you understand the risks, you can enable this experiment feature by executing `SET GLOBAL tidb_enable_alter_placement = 1;`. -Placement Rules in SQL is a feature that enables you to specify where data is store in a TiKV cluster using SQL interfaces. Using this feature, tables and partitions are scheduled to a specific regions, data centers, racks, or hosts. This is useful for scenarios including optimizing a high availability strategy with lower cost, ensuring that local replicas of data are available for local stale reads, and adhering to compliance requirements. +Placement Rules in SQL is a feature that enables you to specify where data is stored in a TiKV cluster using SQL interfaces. Using this feature, tables and partitions are scheduled to specific regions, data centers, racks, or hosts. This is useful for scenarios including optimizing a high availability strategy with lower cost, ensuring that local replicas of data are available for local stale reads, and adhering to data locality requirements. The detailed user scenarios are as follows: From 703cd1e086d769b9ec6f38b387ee272f1bbb22bf Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Mon, 15 Nov 2021 11:58:30 +0800 Subject: [PATCH 11/12] clarify a statement according to xhebox --- placement-rules-in-sql.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index 8452b8c8c8d20..2bbb3e0f31b28 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -138,7 +138,7 @@ Because placement options are only inherited from the database schema when a tab ### Advanced placement -The placement options `PRIMARY_REGION`, `REGIONS`, and `SCHEDULE` meet the basic needs of data placement at the loss of some flexibility. For more complex scenarios with the need for higher flexibility, you can also use the advanced placement options of `CONSTRAINTS` and `FOLLOWER_CONSTRAINTS`. These two options are mutually exclusive. If you specify both at the same time, an error will be returned. +The placement options `PRIMARY_REGION`, `REGIONS`, and `SCHEDULE` meet the basic needs of data placement at the loss of some flexibility. For more complex scenarios with the need for higher flexibility, you can also use the advanced placement options of `CONSTRAINTS` and `FOLLOWER_CONSTRAINTS`. You cannot specify the `PRIMARY_REGION`, `REGIONS`, or `SCHEDULE` option with the `CONSTRAINTS` options at the same time. If you specify both at the same time, an error will be returned. For example, to set constraints that data must reside on a TiKV store where the label `disk` must match a value: From 1661f0511782c3b1d98e97e5c629b3a329fe24f8 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Mon, 15 Nov 2021 11:58:55 +0800 Subject: [PATCH 12/12] Update placement-rules-in-sql.md --- placement-rules-in-sql.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/placement-rules-in-sql.md b/placement-rules-in-sql.md index 2bbb3e0f31b28..f8a8767bcc3a2 100644 --- a/placement-rules-in-sql.md +++ b/placement-rules-in-sql.md @@ -138,7 +138,7 @@ Because placement options are only inherited from the database schema when a tab ### Advanced placement -The placement options `PRIMARY_REGION`, `REGIONS`, and `SCHEDULE` meet the basic needs of data placement at the loss of some flexibility. For more complex scenarios with the need for higher flexibility, you can also use the advanced placement options of `CONSTRAINTS` and `FOLLOWER_CONSTRAINTS`. You cannot specify the `PRIMARY_REGION`, `REGIONS`, or `SCHEDULE` option with the `CONSTRAINTS` options at the same time. If you specify both at the same time, an error will be returned. +The placement options `PRIMARY_REGION`, `REGIONS`, and `SCHEDULE` meet the basic needs of data placement at the loss of some flexibility. For more complex scenarios with the need for higher flexibility, you can also use the advanced placement options of `CONSTRAINTS` and `FOLLOWER_CONSTRAINTS`. You cannot specify the `PRIMARY_REGION`, `REGIONS`, or `SCHEDULE` option with the `CONSTRAINTS` option at the same time. If you specify both at the same time, an error will be returned. For example, to set constraints that data must reside on a TiKV store where the label `disk` must match a value: