区域配置管理
查看区域配置
SHOW ZONE CONFIGURATIONS 语句用于查看指定数据库对象的副本区域信息。
前提条件
无
语法格式
查看指定数据分片、数据库、表、索引或分区的区域配置
SHOW ZONE CONFIGURATION FOR [RANGE <range_name> | DATABASE <database_name> | TABLE <table_name> | INDEX <table_name> @ <index_name> | PARTITION <partition_name> OF TABLE <table_name> ];查看所有副本区域信息
SHOW [ALL] ZONE CONFIGURATIONS;
参数说明
| 参数 | 说明 |
|---|---|
range_name | 数据分片的名称,包括: - default:默认副本设置- meta:所有数据的位置信息- liveness:给定时间活动节点的信息 - system:分配新表ID所需的信息以及追踪集群节点状态- timeseries:集群监控数据 |
database_name | 数据库的名称。 |
table_name | 表的名称。 |
index_name | 索引的名称。 |
partition_name | 分区的名称。 |
语法示例
查看指定系统数据分片的副本信息
以下示例查看
default默认系统数据分片的副本区域信息。SHOW ZONE CONFIGURATION FOR RANGE default;执行成功后,控制台输出以下信息:
target | raw_config_sql ----------------+------------------------------------------- RANGE default | ALTER RANGE default CONFIGURE ZONE USING | range_min_bytes = 268435456, | range_max_bytes = 536870912, | gc.ttlseconds = 90000, | num_replicas = 3, | constraints = '[]', | lease_preferences = '[]' (1 row)查看指定数据库的副本信息
以下示例查看
db1数据库的副本区域信息。SHOW ZONE CONFIGURATION FOR DATABASE db1;执行成功后,控制台输出以下信息:
target | config_sql ---------------+------------------------------------------ DATABASE db1 | ALTER DATABASE db1 CONFIGURE ZONE USING | range_min_bytes = 1048576, | range_max_bytes = 8388608, | gc.ttlseconds = 100000, | num_replicas = 5, | constraints = '[]', | lease_preferences = '[]' (1 row)查看指定表的副本区域信息
以下示例查看
t1表的副本区域信息。SHOW ZONE CONFIGURATION FOR TABLE t1;执行成功后,控制台输出以下信息:
target | raw_config_sql ----------------+------------------------------------------- RANGE default | ALTER RANGE default CONFIGURE ZONE USING | range_min_bytes = 268435456, | range_max_bytes = 536870912, | gc.ttlseconds = 90000, | num_replicas = 3, | constraints = '[]', | lease_preferences = '[]' (1 row)
修改区域配置
ALTER CONFIGURE ZONE 语句用于修改或移除数据库、表、数据分片、分区的副本区域配置。
所需权限
- 修改系统数据库或系统数据分片
- 非三权分立模式下,用户是
admin角色的成员。默认情况下,root用户属于admin角色。 - 三权分立模式下,用户是
sysadmin角色的成员。默认情况下,sysroot用户属于sysadmin角色。
- 非三权分立模式下,用户是
- 修改其他库或其他库下的数据分片、表或分区
- 非三权分立模式下,用户是
admin角色的成员或者拥有目标对象的 CREATE 权限或 ZONECONFIG 权限。默认情况下,root用户属于admin角色。 - 三权分立模式下,用户是
sysadmin角色的成员或者是拥有目标对象 CREATE 权限或 ZONECONFIG 权限的普通用户。默认情况下,sysroot用户属于sysadmin角色。
- 非三权分立模式下,用户是
语法格式
ALTER [DATABASE <database_name> | TABLE <table_name> | RANGE <range_name> | PARTITION <partition_name> OF TABLE <table_name> ] CONFIGURE ZONE [USING <variable> = [COPY FROM PARENT | <value>], <variable> = [<value> | COPY FROM PARENT], ... | DISCARD];
参数说明
| 参数 | 说明 |
|---|---|
database_name | 待修改的数据库名。 |
table_name | 待修改的表名。 |
range_name | 待修改的数据分片名,包括: - default:默认副本设置- meta:所有数据的位置信息- liveness:给定时间活动节点的信息 - system:分配新表ID所需的信息以及追踪集群节点状态- timeseries:集群监控数据 |
partition_name | 待修改的表分区名。 |
variable | 待修改的变量名,支持修改以下变量: - range_min_bytes:数据分片的最小大小,单位为字节。数据分片小于该值时,KaiwuDB 会将其与相邻数据分片合并。默认值:256 MiB,设置值应大于 1 MiB(1048576 字节),小于数据分片的最大大小。- range_max_bytes:数据分片的最大大小,单位为字节。数据分片大于该值时,KaiwuDB 会将其切分到两个数据分片。默认值: 512 MiB。设置值不得小于 5 MiB(5242880 字节)。- gc.ttlseconds:数据在垃圾回收前保留的时间,单位为秒。默认值为 90000(25 小时)。设置值建议不小于 600 秒(10 分钟),以免影响长时间运行的查询。设置值较小时可以节省磁盘空间,设置值较大时会增加 AS OF SYSTEM TIME 查询的时间范围。另外,由于每行的所有版本都存储在一个永不拆分的单一数据分片内,不建议将该值设置得太大,以免单行的所有更改累计超过 64 MiB,导致内存不足或其他问题。- num_replicas:副本数量。默认值为 3。system 数据库、meta、liveness 和 system 数据分片的默认副本数为 5。 注意:集群中存在不可用节点时,副本数量不可缩减。- constraints:副本位置的必需(+)和/或禁止(-)约束。例如 constraints = '{"+region=NODE1": 1, "+region=NODE2": 1, "+region=NODE3": 1}' 表示在节点 1、2 和 3 上必须各放置 1 个副本。目前只支持 region=NODEx 格式。 - lease_preferences:主副本位置的必需(+)和/或禁止(-)约束的有序列表。例如 lease_preferences = '[[+region=NODE1]]' 表示倾向将主副本放置在节点 1。如果不能满足首选项,KaiwuDB 将尝试下一个优先级。如果所有首选项都无法满足,KaiwuDB 将使用默认的租约分布算法,基于每个节点已持有的租约数量来决定租约位置,尝试平衡租约分布。列表中的每个值可以包含多个约束。注意: - 租约偏好不必与 constraints 字段共享,用户可以单独定义 lease_preferences- 设置 constraints 时需要同步设置 num_replicas,且 constraints 数量需要小于等于 num_replicas 数量。constraints 中的顺序无影响 |
value | 变量值。 |
COPY FROM PARENT | 使用父区域的设置值。 |
DISCARD | 移除区域配置,采用默认值。 |
语法示例
修改数据库的区域配置
以下示例将
db3数据库的副本数改为 5 个,将数据在垃圾回收前保留的时间改为 100000 秒。> ALTER DATABASE db3 CONFIGURE ZONE USING num_replicas = 5, gc.ttlseconds = 100000; CONFIGURE ZONE 1 > SHOW ZONE CONFIGURATION FOR DATABASE db3; target | config_sql +-----------+-----------------------------------------+ db3 | ALTER DATABASE db3 CONFIGURE ZONE USING | range_min_bytes = 268435456, | range_max_bytes = 536870912, | gc.ttlseconds = 100000, | num_replicas = 5, | constraints = '[]', | lease_preferences = '[]' (6 rows)修改表的区域配置
以下示例将
orders表的副本数改为 3 个,将数据在垃圾回收前保留的时间改为 100000 秒。> ALTER TABLE orders CONFIGURE ZONE USING num_replicas = 3, gc.ttlseconds = 100000; CONFIGURE ZONE 1 > show zone configuration for table orders; target | config_sql ---------------+------------------------------------------ TABLE orders | ALTER TABLE orders CONFIGURE ZONE USING | range_min_bytes = 268435456, | range_max_bytes = 536870912, | gc.ttlseconds = 100000, | num_replicas = 3, | constraints = '[]', | lease_preferences = '[]' (1 row)移除表的区域配置
以下示例移除了
orders表的自定义设置,改为使用默认数据分片设置。> alter table orders configure zone discard; CONFIGURE ZONE 1 > show zone configuration for table orders; target | raw_config_sql ----------------+------------------------------------------- RANGE default | ALTER RANGE default CONFIGURE ZONE USING | range_min_bytes = 268435456, | range_max_bytes = 536870912, | gc.ttlseconds = 90000, | num_replicas = 3, | constraints = '[]', | lease_preferences = '[]' (1 row)