详解clickhouse分区目录的合并过程

news2024/10/2 22:30:01

数据存储底层分布

目录名类型说明
202103_1_10_2目录分区目录一个或多个,由于分区+LSM生成的
detached目录通过DETACH语句卸载后的表分区存放位置
format_version.txt文本文件纯文本,记录存储的格式

columns.txt:该文件是一个文本文件,存储了表结构信息,可以用文本编辑打开。

count.txt:该文件也是一个文本文件,存储了该分区下的行数。可以用文本文件打开。在用户执行select count(*) from xxx时本质上就是直接返回了该文件的内容,而不需要遍历数据。因此clickhouse的count(*)的速度非常快

[column].bin:真正存储数据的数据文件。每一列都会生成一个单独的bin文件

skp_idx_[column].idx:跳数索引,在使用了二级索引时会生成,否则这不生成

数据分区目录命名规则

比如20221115_2_2_0,其中 20221115是分区ID ,2_2对应的是最小的数据块编号和最大的数据块编号,最后的 _0 表示目前分区合并的层级。这么命名是为了数据目录合并算法。

分区ID:该值由 insert 数据时分区键的值来决定。分区键支持使用任何一个或者多个字段组合表达式,针对取值数据类型的不同,分区ID的生成逻辑目前有四种规则:

  • 不指定分区键:如果建表时未指定分区键,则分区ID默认使用all,所有数据都被写入all分区中。
  • 整型字段:如果分区键取值是整型字段,并且无法转换为YYYYMMDD的格式,则会按照该整型字段的字符形式输出,作为分区ID取值。
  • 日期类型:如果分区键属于日期格式,或可以转换为YYYYMMDD格式的整型,则按照YYYYMMDD格式化后的字符形式输出,作为分区ID取值。
  • 其他类型:如果使用其他类似Float、String等类型作为分区键,会通过对其插入数据的128位Hash值作为分区ID的取值。

MinBlockNum 和 MaxBlockNum: BlockNum 是一个整型的自增长型编号,该编号在单张MergeTree表中从1开始全局累加,当有新的分区目录创建后,该值就加1,对新的分区目录来讲,MinBlockNum 和 MaxBlockNum 取值相同。

Level: 表示合并的层级。相当于某个分区被合并的次数,它不是以表全局累加,而是以分区为单位,初始创建的分区,初始值为0,相同分区ID发生合并动作时,在相应分区内累计加1。

分区目录的合并过程

         MergeTree的分区目录和传统意义上其他数据库有所不同。MergeTree的分区目录并不是在数据表被创建之后就存在的,而是在数据写入过程中被创建的。也就是说如果一张数据表没有任何数据,那么也不会有任何分区目录存在。MergeTree的分区目录伴随着每一批数据的写入(一次INSERT语句),MergeTree都会生成一批新的分区目录即便不同批次写入的数据属于相同分区,也会生成不同的分区目录。也就是说,对于同一个分区而言,也会存在多个分区目录的情况。在之后的某个时刻(写入后的10~15分钟,也可以手动执行optimize查询语句),ClickHouse会通过后台任务再将属于相同分区的多个目录合并成一个新的目录。已经存在的旧分区目录并不会立即被删除,而是在之后的某个时刻通过后台任务被删除(默认8分钟)。

但是有些特殊场景下,用户希望立刻删除老的数据目录,这种需求可以在创建MergeTree表的时候通过Settings属性来设置。如下所示

CREATE TABLE partition_directory_merge
(
    partition_key Int32,
    orderBy_key String,
    data String
)
ENGINE = MergeTree()
PARTITION BY partition_key
ORDER BY orderBy_key
SETTINGS old_parts_lifetime = 1
  • old_parts_lifetime 这个属性的含义是多久删除老的分区数据目录。单位是秒

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/7357.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue 生成二维码的两种方式

方式一&#xff1a;qrcode&#xff08;无 icon 图标&#xff09; npm i qrcodejs2 --save 完整代码 <template><div class"flex-box"><div>qrcode&#xff08;无 icon 图标&#xff09;</div><div class"qr-code" ref"…

【面试题】BFC的理解

1. BFC Block format context(BFC)&#xff0c;块级格式上下文。BFC是一个独立的布局环境&#xff0c;BFC内部的元素的渲染不会影响到边界以外的元素。 2. BFC的布局规则 BFC内部的块会在垂直方向上一个接一个的放置&#xff1b;垂直方向上的距离由margin决定&#xff0c;在…

vision transformer 剪枝论文汇总

Vision Transformer Pruning 这篇论文的核心思想很简单&#xff0c;就是剪维度&#xff0c;也就是说剪的是这个d。 具体方法就是通过一个gate&#xff0c;如图中的dimension pruning&#xff0c;输出0或者1&#xff0c;来判断不同维度的重要性&#xff0c;但是由于0和1&#xf…

最新CleanMyMac X4.12.1中文版Mac系统优化清理工具

CleanMyMac X v4.12.1是COCO玛奇朵搜集到的一款mac电脑系统清理工具&#xff0c;删除系统缓存文件 , 多余的应用程序语言包 , PowerPc软件运行库等。 CleanMyMac是一个强大的应用程序&#xff0c;清洁&#xff0c;优化和保护您的Mac多年的使用。运行即时系统清理&#xff0c;卸…

html+css实现容器显示两行文本超出部分以省略号显示

Bootstrap 给予响应式、移动设备优先的流式栅格系统提供了十分丰富的样式类&#xff0c;基于这些了可以做出很多好看的效果&#xff0c;虽让提供了常用基本样式类&#xff0c;但有一些比较特殊的需求 比如bootstrap 提供了 text-truncate 样式类&#xff0c;使用这个类可以轻松…

只开源36小时!GitHub标星139K从Java开发到软件架构师进阶笔记

什么是架构? 关于架构&#xff0c;我以前一直以为&#xff0c;只有真正从0到1&#xff0c;经历各种技术选型后搭建出来的一个系统框架&#xff0c;才算是真正的架构。 在程序员的现实世界里&#xff0c;不想当架构师的程序员不是个好程序员&#xff0c;即使你未曾主动想去当…

Mac M1 安装 brew

安装顺序&#xff1a; 1. 安装 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 执行完后&#xff0c;发现brew &#xff0c;还是命令找不到。 2. 还要配置&#xff1a; 复制该内容到 vim ~/.zprofile&#x…

ElasticSearch——手写一个ElasticSearch分词器(附源码)

1. 分词器插件 ElasticSearch提供了对文本内容进行分词的插件系统&#xff0c;对于不同的语言的文字分词器&#xff0c;规则一般是不一样的&#xff0c;而ElasticSearch提供的插件机制可以很好的集成各语种的分词器。 Elasticsearch 本身并不支持中文分词&#xff0c;但好在它…

Python——BeautifulSoup库

下面例题基于同一个网页讲解&#xff0c;进入网页后右键查看页面源代码对应着看 文章目录前言一、BeautifulSoup库简介什么是BeautifulSoup库&#xff1f;BeautifulSoup库解析器网页爬虫解析网页的基本方法二、BeautifulSoup库的安装安装测试三、BeautifulSoup库的基本元素获取…

APS排产在线材线束行业的应用

经过数年的发展&#xff0c;我国线束行业从无到有、从小到大&#xff0c;已经具备了一定的规模&#xff0c;其生产的线束产品能够满足市场上绝大多数的需求。世界上&#xff0c;任何事物的发展都不可能一帆风顺&#xff0c;总是在矛盾中纠正自身不足&#xff0c;从而不断前进。…

关于CUDA+Torch+TorchVision+Python环境配置问题

背景知识 1、GPU的并行计算能力&#xff0c;在过去几年里恰当地满足了深度学习的需求。在训练强化学习模型时&#xff0c;为了提供更好地算力和训练时间&#xff0c;因此需要使用GPU。 2、CUDA&#xff1a;是Nvidia推出的只能用于自家GPU的并行计算框架。只有安装这个框架才能…

机器学习笔记之条件随机场(五)条件随机场需要解决的任务介绍

机器学习笔记之条件随机场——条件随机场需要解决的任务介绍引言回顾&#xff1a;条件随机场条件随机场要解决的任务引言 上一节介绍了条件随机场的建模对象——条件概率P(I∣O)\mathcal P(\mathcal I \mid \mathcal O)P(I∣O)参数形式和向量形式的表示。本节将针对条件随机场…

java多线程基础技术

1.1 进程与多线程 1、进程 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至 CPU&#xff0c;数据加载至内存。在 指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的 当一个程…

Mysql 数据库开发简介与选择

文章目录 前言一、为什么要使用数据库 数据库的概念为什么要使用数据库二、程序员为什么要学习数据库三、数据库的选择 主流数据库简介使用MySQL的优势版本选择四、Windows 平台下安装与配置MySQL 启动MySQL 服务控制台登录MySQL命令五、Linux 平台下安装与配置MySQL总结前言 …

【附源码】计算机毕业设计JAVA宠物收养管理

【附源码】计算机毕业设计JAVA宠物收养管理 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA mybati…

go微服务框架Kratos简单使用总结

Kratos是B站开源的一款go的微服务框架&#xff0c;最近PS5上的 战神诸神黄昏比较火&#xff0c;主角就是奎托斯。这个框架的名字就取自他。 在进行框架选型时&#xff0c;对比了目前主流的很多go微服务框架&#xff0c;如Zero&#xff0c;最后对比之下&#xff0c;选择了Krato…

vector容器 (20221115)

一、vector容器 1、功能&#xff1a;与数组非常相似&#xff0c;也称为单端数组。 2、区别&#xff1a;数组是静态空间&#xff0c;vector可以动态扩展。 动态扩展&#xff1a;并不是在原空间之后续接新空间&#xff0c;而是找更大的内存空间&#xff0c;将原数据拷贝到新空…

Django框架的电商商城的设计与实现python语言

摘要 随着计算机技术&#xff0c;网络技术的迅猛发展&#xff0c;Internet 的不断普及&#xff0c;网络在各个领域里发挥了越来越重要的作用。特别是随着近年人民生活水平不断提高&#xff0c;电商商城给商家的业务带来了更大的发展机遇。 在经济快速发展的带动下&#xff0c;服…

网络读卡器开发,带你智能感知无线设备

随着物联网行业的快速发展&#xff0c;针对网络读卡器的技术要求也在不断地提升&#xff0c;为此出现一款体积小、低功耗、高度集成、性能稳定的非接触读卡器&#xff0c;用户不需要进行编程设计&#xff0c;只用发送简单命令&#xff0c;就能完成对卡片的读写。 网路读卡器是智…

通过DataEase行列权限设置实现数据权限管控

在企业的日常经营中&#xff0c;企业人数达到一定数量之后&#xff0c;就需要对企业的层级和部门进行细分&#xff0c;建立企业的树形组织架构。围绕着树形组织架构&#xff0c;企业能够将权限落实到个人&#xff0c;避免企业内部出现管理混乱等情况。而在涉及到数据分析等工作…