【详述】
咨询各位大佬,针对分区表目前有3个问题,望请教下,
1.使用表达式parttition by column (字符串的column)创建的分区表,导入数据后show partition显示分区为list分区这个是合理的是嘛
2.针对上面使用表达式分区创建的分区表,在设置了partition_live_number为3后,按理说只保留按字典排序的分区值前3个分区,但是在fe.log日志中发现这样一个日志:
INFO (DynamicPartitionScheduler|54) [DynamicPartitionScheduler.findSchedulableTables():701] finished to find all schedulable tables, cost: 1ms, dynamic partition tables: {starrocks_aud
it_db__=[starrocks_audit_tbl__]}, ttl partition tables: {fintech=[mkt_user_df]}, scheduler enabled: true, scheduler interval: 600s
2024-08-06 14:55:21.248+08:00 WARN (DynamicPartitionScheduler|54) [DynamicPartitionScheduler.scheduleTTLPartition():497] currently only support range partition.remove database=55044, table=162644 from scheduler
这个显示我不是range分区建立的表是否设置了partition_live_number是不生效的,starrocks不会帮我删除历史分区?
3.如果会删除,那每次删除历史分区的时机是什么时候呢?
【背景】无
【业务影响】
【是否存算分离】否
【StarRocks版本】3.2.8
【集群规模】例如:3fe+5be
-
分区表显示为 List 分区 :如果您使用表达式
partition by 字段
创建了一个分区表,理论上这种方式应该生成 Range 分区。这个可以发下语句具体看下 是不是配置哪里有问题 -
partition_live_number
参数不生效 :你提到的日志信息显示了DynamicPartitionScheduler
的警告,表明当前只支持 Range 分区,并且分区的删除功能在你的情况中可能未启用。partition_live_number
参数用于设置保留的分区数量,但如果日志显示你使用的分区类型不被支持,那么该参数可能会无效。在这种情况下,StarRocks 可能不会自动删除历史分区。 -
删除历史分区的时机 :如果
partition_live_number
参数有效,StarRocks 通常会在定期的调度中(如DynamicPartitionScheduler
任务运行周期)执行删除操作 ,以 当前时间 为基准,然后从后往前数指定个数的分区进行保留,其余(更早的)分区会被删除。后台会定时调度任务来管理分区数量,调度间隔可以通过 FE 动态参数dynamic_partition_check_interval_seconds
配置,默认为 600 秒,即 10 分钟。假设当前为 2023 年 4 月 4 日,partition_live_number
设置为2
,分区包含p20230401
、p20230402
、p20230403
、p20230404
,则分区p20230403
、p20230404
会保留,其他分区会删除。如果导入了脏数据,比如未来时间 4 月 5 日和 6 日的数据,导致分区包含p20230401
、p20230402
、p20230403
、p20230404
、p20230405
、p20230406
,则分区p20230403
、p20230404
、p20230405
、p20230406
会保留,其他分区会删除。
[quote=“yuchen1019, post:2, topic:14088”
您
[/quote]
针对问题1 建表语句为
CREATE TABLE test
(
user_guid
varchar(65533) NULL COMMENT “user_guid”,
fst_mkt_activity_id
varchar(65533) NULL COMMENT “”,
lst_mkt_activity_id
varchar(65533) NULL COMMENT “”,
pt
varchar(65533) NOT NULL COMMENT “full_partition”
) ENGINE=OLAP
DUPLICATE KEY(user_guid
, fst_mkt_activity_id
, lst_mkt_activity_id
)
COMMENT “test”
PARTITION BY (pt
)
DISTRIBUTED BY HASH(user_guid
, fst_mkt_activity_id
, lst_mkt_activity_id
) BUCKETS 60
PROPERTIES (
“replication_num” = “3”,
“in_memory” = “false”,
“enable_persistent_index” = “false”,
“replicated_storage” = “true”,
“partition_live_number” = “3”,
“compression” = “LZ4”
);
与官网样例中的https://docs.starrocks.io/zh/docs/table_design/expression_partitioning/截图中的描述一样方式进行建表,按理说这样建表方式是不是都会是list分区