Doris进阶——动态分区

动态分区:对表级别的数据进行生命周期管理,相当于对分区设置TTL。可对分区实现动态添加和动态删除,动态分区只支持Range分区

原理:FE会在后台起一条线程,根据用户定义的规则进行分区的创建和删除。同时Doris支持对已有规则进行动态调整。

Doris目前只支持对单列分区的分区表设定动态分区规则。

动态分区前缀:dynamic_partition;

动态分区参数可参考:Doris官网

动态分区建表语句示例(创建一张以小时为单位的分区表):

-- 创建以小时为分区的动态分区表,注意HOUR的数据类型不能是DAET,应该是DATETIME

 CREATE TABLE IF NOT EXISTS test.dynamic_test
(
    `timestamp` DATETIME NOT NULL COMMENT "日志时间",
    `type` INT NOT NULL COMMENT "日志类型",
    `error_code` INT COMMENT "错误码",
    `error_msg` VARCHAR(1024) COMMENT "错误详细信息",
    `op_id` BIGINT COMMENT "负责人id",
    `op_time` DATETIME COMMENT "处理时间"
)
ENGINE=OLAP -- 指定执行引擎
DUPLICATE KEY(`timestamp`, `type`) -- 明细表
PARTITION BY RANGE(`timestamp`)() -- 指定分区Key
DISTRIBUTED BY HASH (`timestamp`) BUCKETS 10
PROPERTIES(
"replication_num" = "2", -- 指定副本数
"dynamic_partition.enable" = "true", -- 开启动态分区特性
"dynamic_partition.time_unit" = "HOUR", -- 指定为HOUR分区(可根据需求创建月、周、日分区,但是HOUR 分区的数据类型不能是DATE,只能是DATETIME)
"dynamic_partition.end" = "1", -- 动态分区的结束偏移,为正数,提前创建对应范围的分区
"dynamic_partition.start" = "-5",-- 动态分区的起始偏移量,为负数,会删除对应范围的分区
"dynamic_partition.prefix" = "p", -- 指定分区前缀
"dynamic_partition.buckets" = "10" -- 指定分区中的分桶数
 );
  • 查看表分区:SHOW PARTITIONS FROM TABLE;

创建历史分区:

历史分区主要参数介绍,其他参数请参考 :Doris官网

  • create_history_partition  创建历史分区的开关,默认是false,改为true时就会自动创建历史分区,但是和start有关,如start未设置则无意义

  • history_partition_num 创建历史分区的数据量,默认为-1,不设置时,创建历史分区数量为 end - start,如参数大于 end - start ,则多余的分区不会创建

  • hot_partition_num 指定热分区,参数值标识往前N天和未来所有分区全部为热分区。对于热分区,系统会自动设置存储方式为SSD,并且设置storage_cooldown_time

  • 创建历史分区的方式:可以在建表时直接指定,也可以通过ALTER 的方式设置

    • 例如:ALTER TABLE student_dynamic_partition1 SET ("dynamic_partition.create_history_partition" = "true");

    • 查看分区情况:SHOW PARTITIONS FROM TABLE;

手动分区和动态分区的转换:

手动和动态分区的转换,主要时通过dynamic_partition 的参数来调整的

动态转手动:"dynamic_partition.enable" = "false" 关闭动态分区开关即可

手动转动态:"dynamic_partition.enable" = "true" 打开动态分区开关即可,还需要添加 end、start等参数

具体内容看官网!!!

你可能感兴趣的:(Doris,笔记,big,data,大数据,数据仓库,database,sql)