INTERVAL RANGE
操作场景
INTERVAL RANGE分区表是RANGE分区表的扩展,向RANGE分区表插入数据时,如果插入的数据超出当前已存在分区的范围,将无法插入并且会返回错误;
而对于INTERVAL RANGE分区表,当新插入的数据超过现有分区的范围时,允许数据库根据INTERVAL子句提前指定的规则来添加新分区。
前提条件
- TaurusDB的内核版本大于等于2.0.54.240600。内核版本的查询方法请参见如何查看云数据库 TaurusDB实例的版本号。
- 设置特性开关rds_interval_range_enabled的值为ON。
使用限制
- INTERVAL RANGE表只支持HASH/KEY二级分区。
- 采取RANGE COLUMNS(column_list) INTERVAL([type], value)形式描述INTERVAL RANGE规则时:
- column_list(分区键)中列个数只能为1,并且只能是是整数类型或者DATE/TIME/DATETIME类型。
- 如果分区键是整型,INTERVAL的间隔类型type不需要填写。
- 如果分区键为DATE类型,INTERVAL的间隔类型type只能取YEAR、QUARTER、MONTH、WEEK、DAY。
- 如果分区键为TIME类型,INTERVAL的间隔类型type只能取HOUR、MINUTE、SECOND。
- 如果分区间为DATETIME类型,INTERVAL的间隔类型type可以取YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND。
- 间隔值value只能为正整数。
- 如果INTERVAL的间隔类型是SECOND,间隔不能小于60。
- 采取RANGE(expr) INTERVAL(value)形式描述INTERVAL RANGE规则时,expr表达式的结果应为整数,间隔值value只能为正整数。
- 不支持使用INSERT ...SELECT语句、INSERT ...ON DUPLICATE KEY UPDATE语句、UPDATE语句触发分区新增。
- LOAD DATA时不会触发分区自增(如果分区覆盖了所有插入数据的范围,能使用load data导入数据,如果分区没有覆盖插入数据的范围,load data无法触发自增分区,导入数据失败)。
- 不支持在显式事务和设置set autocommit=0后的SQL语句中新增分区。
- 自增的分区使用'_p'作为分区名的前缀,因此客户设置的以此开头的分区名可能导致分区自增失败。
- SET INTERVAL([type], value)子句只适用于INTERVAL RANGE表和RANGE表,如果这两种表有二级分区,只支持二级分区为HASH或KEY类型。
- SET INTERVAL([type], value)子句的type和value取值要受原表的分区表达式expr或分区键column_list的约束。
使用方法
|
参数名称 |
级别 |
参数说明 |
|---|---|---|
|
rds_interval_range_enabled |
Global |
INTERVAL RANGE功能控制开关。 取值范围如下:
|
创建INTERVAL RANGE分区表
INTERVAL RANGE分区表定义格式类似于RANGE分区表,但多了INTERVAL子句。
INTERVAL RANGE分区表与任意类型表的相互转换
支持将其他类型表转化为INTERVAL RANGE分区表,也支持INTERVAL RANGE分区表转化为其他任意类型的表。
SET INTERVAL子句支持
支持使用SET INTERVAL子句修改INTERVAL RANGE表定义的INTERVAL子句间隔类型和间隔值,也可实现消除或添加INTERVAL子句。