Clickhouse从入门到入坑(12)

154 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情

生命不息,学习不止

题外话

周二了,今天是情人节,不知道各位掘友们有没有找到自己心仪的女朋友呢,找到的打算怎么过呢,没找到的单身狗子们又打算怎么过呢?

废话不多说,上货

在这里插入图片描述

数据块合并举例

上两节都说了数据块的合并引擎,但对于合并的概念还是比较模糊,举个例子解释一下

Block NumberBlock SizeData QuantityTime RangeUsage FrequencyStrategy
1500 MB200 MB1-3 daysHighMerge
2700 MB600 MB4-7 daysLowSplit
3200 MB100 MB8-10 daysMediumNo Change
4800 MB700 MB11-14 daysHighMerge

表格列举数据块的四种形式,

  • Block Number:块的编号。
  • Block Size:块的大小。
  • Data Quantity:块中的数据量。
  • Time Range:块中的数据时间范围。
  • Usage Frequency:块的使用频率。
  • Strategy:采用的策略(Merge:合并;Split:拆分;No Change:不改变)。

根据上面的图表示例即可看出,如果数据块的大小超过阈值,数据量达到阈值,数据时间范围达到阈值,使用频率低,那么ClickHouse就会采用拆分策略;如果使用频率高,那么ClickHouse就会采用合并策略。

表引擎

继续表引擎的介绍

  • ReplacingMergeTree:这是MergeTree的变体,适用于替换数据而不是合并数据。

ReplacingMergeTree的原理与MergeTree类似,它也将数据表划分为多个块,并在块内排序,以便后续的快速查询。不同的是,ReplacingMergeTree允许更新数据,并在块内维护最新的数据。

当数据更新时,ReplacingMergeTree不会直接修改原始数据,而是将新的数据插入到块的末尾。在这个过程中,ReplacingMergeTree将旧的数据标记为过期,但保留在块中。当块的大小超过预先设定的阈值时,ReplacingMergeTree会对该块进行分裂,并将分裂后的数据保存到两个新的块中。这样,ReplacingMergeTree可以保证旧的数据在分裂后仍然可用,并且新的数据可以插入到适当的块中。

ReplacingMergeTree也支持聚合操作,可以快速地执行聚合操作,如求和、平均值等,并且可以提供有关整个数据集的统计信息。

你以为结束了

下一篇我们继续挖坑

在这里插入图片描述

大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划! 在这里插入图片描述