Doris Doris分区表-动态分区

Doris的动态分区功能在0.12版本引入,支持范围分区,用于自动管理表分区的生命周期,TTL策略,但需注意在CCR同步期间可能失效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Doris分区表-动态分区

https://doris.apache.org/zh-CN/docs/dev/advanced/partition/dynamic-partition

动态分区是在 Doris 0.12 版本中引入的新功能。旨在对表级别的分区实现生命周期管理(TTL),减少用户的使用负担。
目前实现了动态添加分区及动态删除分区的功能。
动态分区只支持 Range 分区。
注意:这个功能在被CCR同步时将会失效。如果这个表是被CCR复制而来的,即PROPERTIES中包含is_being_synced = true时,在show create table中会显示开启状态,但不会实际生效。当is_being_synced被设置为 false 时,这些功能将会恢复生效,但is_being_synced属性仅供CCR外围模块使用,在CCR同步的过程中不要手动设置。

示例

CREATE TABLE `dwd_test_xxxx_aaaa_rim` (
 `apply_date`                date         NULL COMMENT '日期',
 `user_course_id`            bigint(20)   NULL COMMENT 'id',
 `supplier_id`               bigint(20)   NULL COMMENT 'id',
 `order_id`                  bigint(20)   NULL COMMENT '订单id',
 `apply_time`                datetime     NULL COMMENT '时间',
 `origin_channel_arguments`  varchar(512) NULL COMMENT '渠道参数'
)
ENGINE=OLAP
UNIQUE KEY(`apply_date`,`user_course_id`,`supplier_id`)
COMMENT '测试表'
PARTITION BY RANGE(`apply_date`) ()
DISTRIBUTED BY HASH(`supplier_id`) BUCKETS 3
PROPERTIES
(
    "replication_allocation" = "tag.location.default: 3",
    "is_being_synced" = "false",
    "storage_format" = "V2",
    "compression" = "ZSTD",
    "enable_unique_key_merge_on_write" = "true",
    "light_schema_change" = "true",
    "disable_auto_compaction" = "false",
    "enable_single_replica_compaction" = "false",
    "dynamic_partition.enable" = "true",
    "dynamic_partition.time_unit" = "DAY",
    "dynamic_partition.start" = "-5",
    "dynamic_partition.end" = "1",
    "dynamic_partition.prefix" = "p",
    "dynamic_partition.buckets" = "1"
);
<think>嗯,用户想了解如何在Doris中开启动态分区。我需要先回忆一下Doris动态分区功能相关的内容。动态分区主要是为了自动管理分区,比如按天自动创建或删除分区,减少手动操作的工作量。 首先,我应该确认Doris动态分区功能是如何配置的。记得动态分区需要在建的时候或者通过ALTER TABLE来设置分区属性。可能涉及到几个参数,比如动态分区的开关、时间单位、分区的起始偏移量、分区的数量等等。 然后,用户可能关心的是具体的步骤,包括如何创建支持动态分区,或者如何修改已有来启用动态分区。需要分步骤说明,可能包括建示例,参数解释,以及验证是否生效的方法。 另外,动态分区的常用参数有哪些?比如enable、time_unit、start、end、prefix、buckets等,这些都需要详细解释每个参数的作用,这样用户才能正确配置。 还要注意一些常见问题,比如动态分区需要分区列为DATE或DATETIME类型,且分区的命名要符合prefix的规则。用户可能遇到分区创建失败的情况,这时候需要检查参数设置是否正确,或者是否有权限问题。 最后,是否需要给出一个完整的例子,让用户能直接复制修改?比如创建的SQL语句,包含动态分区的配置,然后通过SHOW命令检查是否成功创建分区。此外,可能还需要提到如何禁用动态分区,或者调整已有动态分区参数。 总结下来,步骤应该是: 1. 确认Doris版本是否支持动态分区。 2. 创建时指定动态分区参数,或者修改已有。 3. 配置必要的参数,如enable、time_unit、start等。 4. 验证分区是否自动创建。 5. 可能的问题排查和注意事项。 需要确保回答结构清晰,参数解释明确,示例正确,并且语法正确,使用中文回答,符合用户的要求。</think>在Doris中开启动态分区功能可通过以下步骤实现: ### 一、动态分区核心参数 需在属性中配置以下参数(支持建时指定或通过`ALTER TABLE`修改): ```sql PROPERTIES ( "dynamic_partition.enable" = "true", "dynamic_partition.time_unit" = "DAY", "dynamic_partition.start" = "-3", "dynamic_partition.end" = "7", "dynamic_partition.prefix" = "p", "dynamic_partition.buckets" = "8" ) ``` ### 二、参数说明 | 参数名称 | 必填 | 说明 | |-------------------------------|------|----------------------------------------------------------------------| | dynamic_partition.enable | 是 | 开启动态分区(`true`/`false`) | | dynamic_partition.time_unit | 是 | 分区时间单位(`DAY`/`WEEK`/`MONTH`) | | dynamic_partition.start | 是 | 历史分区保留起点。负数示保留过去N个单位时间 | | dynamic_partition.end | 是 | 未来分区预创建终点。正数示创建未来N个单位时间的分区 | | dynamic_partition.prefix | 否 | 分区名前缀(默认值:`p`) | | dynamic_partition.buckets | 否 | 分区分桶数量(默认值:与已创建分区一致) | ### 三、操作步骤 #### 1. 新建支持动态分区 ```sql CREATE TABLE example_db.dynamic_partition_table ( event_date DATE, event_type VARCHAR(32), user_id BIGINT ) ENGINE=OLAP DUPLICATE KEY(event_date, event_type) PARTITION BY RANGE(event_date)() DISTRIBUTED BY HASH(user_id) BUCKETS 8 PROPERTIES ( "dynamic_partition.enable" = "true", "dynamic_partition.time_unit" = "DAY", "dynamic_partition.start" = "-7", "dynamic_partition.end" = "3", "dynamic_partition.prefix" = "p_day", "replication_num" = "3" ); ``` #### 2. 修改现有配置 ```sql ALTER TABLE example_db.dynamic_partition_table SET ( "dynamic_partition.enable" = "true", "dynamic_partition.time_unit" = "DAY", "dynamic_partition.start" = "-7", "dynamic_partition.end" = "3" ); ``` #### 3. 验证动态分区 ```sql SHOW DYNAMIC PARTITION TABLES; -- 查看已启用动态分区 SHOW PARTITIONS FROM example_db.dynamic_partition_table; -- 查看自动生成的分区 ``` ### 四、注意事项 1. **分区列要求**:必须为`DATE`或`DATETIME`类型 2. **命名规范**:动态分区名称格式为`${prefix}${partition_name}`,例如`p_day20240101` 3. **参数生效时间**:新建立即生效,修改参数需等待下一个调度周期(默认10分钟) 4. **调度周期调整**:通过`ALTER SYSTEM SET dynamic_partition_check_interval_seconds=600`修改检查间隔 ### 五、关闭动态分区 ```sql ALTER TABLE example_db.dynamic_partition_table SET ( "dynamic_partition.enable" = "false" ); ``` > 完整配置示例参考官方文档: > $$ \text{Doris动态分区手册} \quad \texttt{https://doris.apache.org/zh-CN/docs/table/dynamic-partition} $$
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文文鑫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值