有哪位大神知道range分区和range colomns分区有什么区别?分别在什么场景使用?
Range分区:
- 可以做一级和二级分区
- RANGE分区是按用户指定的表达式范围将每一条记录划分到不同分区;常用场景: 按时间字段进行分区
3.目前提供对range分区的分区操作功能,能add/drop分区
存在maxvalue的分区的情况, 由于add分区现在只能加在最后,所以会添加分区失败。
不存在maxvalue的分区的情况,当插入的数据超出当前分区的最大值,则会插入失败
- 适用场景:按时间字段区分。例如将历史流水表按日、周、月分区,实现批量数据清理、备份和导入导出
注意:任何类型的分区都可以做一级分区和二级分区,并配合使用
#########
Range columns分区
- 可以做一级和二级分区
- RANGE COLUMNS分区与RANGE分区类似,但不同点在于RANGE COLUMNS分区可以按一个或多个分区键向量
进行分区,并且每个分区键的类型除了INT类型还可以支持其他类型,比如VARCHAR、 DATETIME等
range column和range的区别是
- 分区不要求是int类型,可以是任意类型
- 不能写表达式
- 分区支持向量
1 个赞
Range 分区和 Range Columns 分区的主要区别和适用场景如下:
主要区别
-
分区键数据类型:
-
Range 分区:分区键必须是整数类型或
YEAR
类型,如果对其他类型的日期字段分区,则需要使用函数进行转换。 -
Range Columns 分区:分区键可以是任意数据类型,包括数值类型(如
TINYINT
、SMALLINT
、INT
、BIGINT
、DECIMAL
、FLOAT
、DOUBLE
)、时间日期类型(如DATE
、DATETIME
、TIMESTAMP
)、字符型(如CHAR
、VARCHAR
)、二进制类型(如BINARY
、VARBINARY
)。
-
Range 分区:分区键必须是整数类型或
-
分区键支持多列:
- Range 分区:分区键仅支持一列。
- Range Columns 分区:分区键可以写多个列(即列向量)。
-
分区键表达式:
- Range 分区:不支持表达式。
- Range Columns 分区:同样不支持表达式。
适用场景
-
Range 分区:
- 适用于需要按单一列进行范围分区的场景,尤其是日期字段。例如,可以将业务日志表按日/周/月分区。
- 示例 SQL:
CREATE TABLE sales ( id INT PRIMARY KEY, sale_date DATE ) PARTITION BY RANGE (sale_date) ( PARTITION p0 VALUES LESS THAN ('2023-01-01'), PARTITION p1 VALUES LESS THAN ('2023-02-01'), PARTITION p2 VALUES LESS THAN ('2023-03-01') );
-
Range Columns 分区:
- 适用于需要按多列进行范围分区的场景,或者分区键不是整数类型的情况。例如,可以按日期和时间字段进行分区。
- 示例 SQL:
CREATE TABLE sales ( id INT PRIMARY KEY, sale_date DATE, sale_time TIME ) PARTITION BY RANGE COLUMNS (sale_date, sale_time) ( PARTITION p0 VALUES LESS THAN ('2023-01-01', '00:00:00'), PARTITION p1 VALUES LESS THAN ('2023-02-01', '00:00:00'), PARTITION p2 VALUES LESS THAN ('2023-03-01', '00:00:00') );
总结来说,Range 分区适合单列范围分区且数据类型为整数或日期,而 Range Columns 分区适合多列范围分区且数据类型更加灵活。
具体信息可参考以下文档: