StarRocks数据分区之动态分区

动态分区功能开启后,可以按需为新数据动态地创建分区,同时 StarRocks 会⾃动删除过期分区,从而确保数据的时效性。

创建支持动态分区的表

创建一张支持动态分区的表,表名为 site_access,动态分区通过 PROPERTIES 进行配置。分区的区间为当前时间的前后 3 天,总共 6 天

CREATE TABLE site_access(
event_day DATE,
site_id INT DEFAULT '10',
city_code VARCHAR(100),
user_name VARCHAR(32) DEFAULT '',
pv BIGINT DEFAULT '0'
)
DUPLICATE KEY(event_day, site_id, city_code, user_name)
PARTITION BY RANGE(event_day)(
PARTITION p20200321 VALUES LESS THAN ("2020-03-22"),
PARTITION p20200322 VALUES LESS THAN ("2020-03-23"),
PARTITION p20200323 VALUES LESS THAN ("2020-03-24"),
PARTITION p20200324 VALUES LESS THAN ("2020-03-25")
)
DISTRIBUTED BY HASH(event_day, site_id)
PROPERTIES(
    "dynamic_partition.enable" = "true",
    "dynamic_partition.time_unit" = "DAY",
    "dynamic_partition.start" = "-3",
    "dynamic_partition.end" = "3",
    "dynamic_partition.prefix" = "p",
    "dynamic_partition.history_partition_num" = "0"
);

动态分区相关属性 PROPERTIES:

  • dynamic_partition.enable:开启动态分区特性,取值为 true(默认)或 false。
  • dynamic_partition.time_unit:动态分区的时间粒度,取值为 HOUR、DAY、WEEK、MONTH 或YEAR。时间粒度会决定动态创建的分区名后缀格式。
取值为 HOUR 时,分区列的类型仅支持 DATETIME,不支持为 DATE。动态创建的分区名后缀格式为 yyyyMMddHH,例如 2020032101。
取值为 DAY 时,动态创建的分区名后缀格式为 yyyyMMdd,例如 20200321。
取值为 WEEK 时,动态创建的分区名后缀格式为 yyyy_ww,例如 2020_13 代表 2020 年第 13 周。
取值为 MONTH 时,动态创建的分区名后缀格式为 yyyyMM,例如 202003。
取值为 YEAR 时,动态创建的分区名后缀格式为 yyyy,例如 2020。
  • dynamic_partition.time_zone:动态分区的时区。默认与系统时区一致。
  • dynamic_partition.start:保留的动态分区的起始偏移,取值范围为负整数。根据dynamic_partition.time_unit属性的不同,以当天(周/月)为基准,分区范围在此偏移之前的分区将会被删除。比如设置为-3,并且dynamic_partition.time_unit为day,则表示
    3 天前的分区会被删掉。如果不填写,则默认为 Integer.MIN_VALUE,即 -2147483648,表示不删除历史分区。
  • dynamic_partition.end:提前创建的分区数量,取值范围为正整数。根据
    dynamic_partition.time_unit 属性的不同,以当天(周/月)为基准,提前创建对应范围的分区
  • dynamic_partition.prefix:动态分区的前缀名,默认值为 p。
  • dynamic_partition.buckets:动态分区的分桶数量。默认与 BUCKETS 保留字指定的分桶数量、或者StarRocks 自动设置的分桶数量保持一致。
  • dynamic_partition.history_partition_num:动态分区的创建历史分区的个数,默认值为0。当值>0时会提前创建历史分区。自 2.5.2 版本起,StarRocks 支持配置该参数。
  • dynamic_partition.start_day_of_week :当 dynamic_partition.time_unit 为WEEK 时,该参数指定每周的第一天。有效值为 1 到 7。1 表示星期一,7 表示星期日。默认值为 1,表示每周从星期一开始。
  • dynamic_partition.start_day_of_month:当 dynamic_partition.time_unit 为MONTH 时,该参数指定每月的第一天。有效值为 1 到 28。1 表示每月的第一天,28 表示每月的第 28 天。默认值为1,表示每月从第一天开始。每月的第一天不支持为 29 日、30 日或 31 日。
  • dynamic_partition.replication_num:在动态创建的分区中,每个 tablet副本的数量。默认值与建表时配置的副本数量相同。

动态分区相关 FE 配置项:

  • dynamic_partition_check_interval_seconds:FE 配置项,动态分区检查的时间周期,默认为
    600,单位为 s,即每10分钟检查一次分区情况是否满足PROPERTIES中动态分区属性,如不满足,则会自动创建和删除分区。

查看表当前的分区情况

SHOW PARTITIONS FROM table_name;
  • 25
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
StarRocks是一个基于列存储的分布式数据仓库,支持PB级别的数据存储和查询。在StarRocks中,数据分区是一个重要的概念,它可以帮助我们更好地管理数据和优化查询性能。 在StarRocks中,我们可以按照不同的维度对数据进行分区,常见的分区方式包括:按照时间、按照地理位置、按照业务维度等。通过合理的分区策略,可以优化数据的存储和查询效率,提高系统的性能和可扩展性。 以下是一些常见的StarRocks分区策略: 1. 时间分区:按照时间维度对数据进行分区,可以将数据按照天、周、月等时间粒度进行划分,方便查询和管理历史数据。 2. 地理位置分区:按照地理位置维度对数据进行分区,可以将数据按照国家、省份、城市等维度进行划分,方便查询和分析地域数据。 3. 业务维度分区:按照业务维度对数据进行分区,可以将数据按照产品、渠道、用户等维度进行划分,方便查询和分析不同业务维度的数据。 4. 哈希分区:根据数据的哈希值对数据进行分区,可以将数据均匀地分布到不同的分区中,避免数据倾斜和单点故障。 在选择分区策略时,需要考虑数据量、查询频率、数据增长率等因素,以满足系统的性能和可扩展性要求。同时,需要注意分区粒度不能过细,否则会导致分区数量过多,影响查询性能和系统稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值