文档下载建议反馈入口

  • 查看区域配置
  • 修改区域配置

区域配置管理

查看区域配置

SHOW ZONE CONFIGURATIONS 语句用于查看指定数据库对象的副本区域信息。

前提条件

语法格式

  • 查看指定数据分片、数据库、表或索引的副本区域信息

    SHOW ZONE CONFIGURATION FOR [RANGE range_name | DATABASE database_name | TABLE table_name  | INDEX table_name @ index_name];
    
  • 查看所有副本区域信息

    SHOW [ALL] ZONE CONFIGURATIONS;
    

参数说明

参数说明
range_name数据分片的名称,包括:
- default:默认副本设置
- meta:所有数据的位置信息
- liveness:给定时间活动节点的信息
- system:分配新表ID所需的信息以及追踪集群节点状态
- timeseries:集群监控数据
database_name数据库的名称。
table_name表的名称。
index_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    |             raw_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 用户或 Admin 角色成员。
    • 三权分立模式下,用户是 sysadmin 角色的成员。默认情况下,sysroot 用户属于 sysadmin 角色。
  • 修改其他库或其他库下的数据分片或表
    • 非三权分立模式下,用户拥有目标对象的 CREATE 或 ZONECONFIG 权限。
    • 三权分立模式下,用户是 sysadmin 角色的成员或者是拥有目标对象 CREATE 权限或 ZONECONFIG 权限的普通用户。默认情况下,sysroot 用户属于 sysadmin 角色。

语法格式

ALTER [DATABASE <database_name> | TABLE <table_name> | RANGE <range_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:集群监控数据
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 数据库、metalivenesssystem 数据分片的默认副本数为 5。 注意:集群中存在不可用节点时,副本数量不可缩减。
- constraints:副本位置的必需(+)和/或禁止(-)约束。
- lease_preferences:租约位置的必需(+)和/或禁止(-)约束的有序列表。每个约束前可带 + 表示必需,或 - 表示禁止。注意,租约偏好不必与 constraints 字段共享,用户可以单独定义 lease_preferences,也可以单独定义 lease_preferences。如果不能满足首选项,KaiwuDB 将尝试下一个优先级。如果所有首选项都无法满足,KaiwuDB 将使用默认的租约分布算法,该算法基于每个节点已持有的租约数量来决定租约位置,尝试平衡租约分布。列表中的每个值可以包含多个约束。例如,列表 [[+zone=zn-east-1b, +ssd], [+zone=zn-east-1a], [+zone=zn-east-1c, +ssd]] 表示首选位于 zn-east-1b 区域具有 SSD 的节点,其次是位于 zn-east-1a 区域的节点,最后是 zn-east-1c 区域具有 SSD 的节点。默认值:如果未指定此字段,则不应用租约偏好。
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;
    zone_name |               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    |             raw_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)