开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情
生命不息,学习不止
题外话
周二了,今天是情人节,不知道各位掘友们有没有找到自己心仪的女朋友呢,找到的打算怎么过呢,没找到的单身狗子们又打算怎么过呢?
废话不多说,上货
数据块合并举例
上两节都说了数据块的合并引擎,但对于合并的概念还是比较模糊,举个例子解释一下
| Block Number | Block Size | Data Quantity | Time Range | Usage Frequency | Strategy |
|---|---|---|---|---|---|
| 1 | 500 MB | 200 MB | 1-3 days | High | Merge |
| 2 | 700 MB | 600 MB | 4-7 days | Low | Split |
| 3 | 200 MB | 100 MB | 8-10 days | Medium | No Change |
| 4 | 800 MB | 700 MB | 11-14 days | High | Merge |
表格列举数据块的四种形式,
- 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也支持聚合操作,可以快速地执行聚合操作,如求和、平均值等,并且可以提供有关整个数据集的统计信息。
你以为结束了
下一篇我们继续挖坑
大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划!