|NO.Z.00007|——————————|BigDataEnd|——|Hadoop&OLAP_ClickHouse.V04|——|ClickHouse.v04|表引擎|MergeTree|数据分区|
一、ClickHouse表引擎&MergeTree数据分区
### --- 数据分区
~~~ 数据是以分区目录的形式组织的,每个分区独立分开存储。
~~~ 这种形式,查询数据时,可以有效的跳过无用的数据文件。
~~~ 数据分区的规则分区键的取值生成分区ID分区根据ID决定。
~~~ 根据分区键的数据类型不同,
~~~ # 分区ID的生成目前有四种规则:
~~~ 不指定分区键
~~~ 使用整形
~~~ 使用日期类型 toYYYYMM(date)
~~~ 使用其他类型
~~~ # 数据在写入时,会对照分区ID落入对应的分区。
### --- 分区目录的生成规则
~~~ partitionID_MinBlockNum_MaxBlockNum_Level
~~~ BlockNum是一个全局整型,从1开始,每当新创建一个分区目录,此数字就累加1。
~~~ MinBlockNum:最小数据块编号
~~~ MaxBlockNum:最大数据块编号
~~~ 对于一个新的分区,MinBlockNum和MaxBlockNum的值相同
~~~ 如:2020_03_1_1_0, 2020_03_2_2_0
~~~ Level:合并的层级,即某个分区被合并过得次数。不是全局的,而是针对某一个分区。
### --- 分区目录的合并过程
~~~ MergeTree的分区目录在数据写入过程中被创建。
~~~ 不同的批次写入数据属于同一分区,也会生成不同的目录,
~~~ 在之后的某个时刻再合并(写入后的10-15分钟),合并后的旧分区目录默认8分钟后删除。
~~~ # 同一个分区的多个目录合并以后的命名规则:
~~~ MinBlockNum:取同一分区中MinBlockNum值最小的
~~~ MaxBlockNum:取同一分区中MaxBlockNum值最大的
~~~ Level:取同一分区最大的Level值加1
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通