自动扩展分区
虚谷数据库范围分区提供了针对日期时间类型的自动扩展分区功能,分区间隔支持HOUR、DAY、MONTH、YEAR。
说明:
对于包含固定分区的自动扩展分区表,支持删除除0号固定分区以外的其他分区的数据。
语法格式
sql
range_auto_partitioning_clause::=
PARTITION BY RANGE (name_list) INTERVAL expr {HOUR|DAY|MONTH|YEAR} PARTITIONS (range_parti_item[,range_parti_item]...)
参数说明
PARTITION BY RANGE
:关键字,用于指定使用范围分区。name_list
:一个或多个列的列表,用于分区的列。[INTERVAL expr {HOUR|DAY|MONTH|YEAR}]
:用于指定分区的时间间隔。PARTITIONS (range_parti_item[,range_parti_item]...)
:分区定义(parti_values)
:一个包含具体值的列表,用于定义分区。
示例
示例1
创建一个以时间为分区键的自动扩展分区表range_test。1970-01-01 00:00:00这个时间点以前的数据落在一个区间内,1970-01-01 00:00:00时间点包含该时间以后的数据以5天为间隔进行分区。sql-- 创建包含固定分区的自动扩展分区表 CREATE TABLE range_test(id INT,create_time DATETIME)PARTITION BY RANGE(create_time)INTERVAL 5 DAY PARTITIONS(('1970-01-01 00:00:00')); -- 查看表分区信息 SELECT * from SYS_PARTIS; DB_ID | TABLE_ID | PARTI_NO | PARTI_NAME | PARTI_VAL | GSTO_NOS | ONLINE | RESERVED1 | RESERVED2 | ------------------------------------------------------------------------------ 1 | 1048578 | 0 | PART1| '1970-01-01 00:00:00'| 202 | T | <NULL>| <NULL>|
示例2
分区管理,删除固定分区报错。sql-- 创建包含固定分区的自动扩展分区表 CREATE TABLE test(c1 INTEGER, c2 DATETIME, c3 VARCHAR) PARTITION BY RANGE(c2) INTERVAL 1 DAY PARTITIONS( p1 VALUES LESS THAN('2000-01-01 00:00:00'), p2 VALUES LESS THAN('2023-09-30 00:00:00'), p3 VALUES LESS THAN('2023-10-01 00:00:00') ); -- 查看表分区信息 SELECT * from SYS_PARTIS; DB_ID | TABLE_ID | PARTI_NO | PARTI_NAME | PARTI_VAL | GSTO_NOS | ONLINE | RESERVED1 | RESERVED2 | ------------------------------------------------------------------------------ 1 | 1048585 | 0 | P1| '2000-01-01 00:00:00'| 201 | T | <NULL>| <NULL>| 1 | 1048585 | 1 | P2| '2023-09-30 00:00:00'| 205 | T | <NULL>| <NULL>| 1 | 1048585 | 2 | P3| '2023-10-01 00:00:00'| 206 | T | <NULL>| <NULL>| -- 删除自动扩展分区表固定分区返回错误 ALTER TABLE test DROP PARTITION p1; Error: [E21093] 不允许删除自动扩展分区表的固定分区 -- 删除除固定分区以外的其他分区 ALTER TABLE test DROP PARTITION p2; ALTER TABLE test DROP PARTITION p3; -- 删除p1、p2分区后查看表分区信息 SELECT * FROM SYS_PARTIS; DB_ID | TABLE_ID | PARTI_NO | PARTI_NAME | PARTI_VAL | GSTO_NOS | ONLINE | RESERVED1 | RESERVED2 | ------------------------------------------------------------------------------ 1 | 1048586 | 0 | P1| '2000-01-01 00:00:00'| 201 | T | <NULL>| <NULL>|