MergeTree 家族全集

共 17 题
#

1. MergeTree 主引擎支持主键排序与稀疏索引

A MergeTree 的主键索引是稠密索引,为每一行都建立索引条目
B MergeTree 采用稀疏索引,每 8192 行生成一个 mark,查询时按主键前缀裁剪数据范围 ✓ 正确答案
C MergeTree 通过 B+ 树索引实现 O(log n) 的点查定位
D MergeTree 的主键与排序键无关,可任意指定
#

2. ReplacingMergeTree 支持按 ORDER BY 列去重,final 阶段合并版本

A INSERT 时立即去重,保证数据实时唯一
B 去重只删除排序键相同且版本也相同的行
C 后台合并 part 时去重,是最终一致,查询可用 FINAL 强制读取期去重 ✓ 正确答案
D 去重结果与写入顺序无关
#

3. ReplacingMergeTree 的 is_deleted 列、final 查询与合并时机对去重效果的影响

A 使用 FINAL 查询时,is_deleted 标记会被忽略
B is_deleted 只在 INSERT 时生效,与合并无关
C is_deleted 配合 use_is_deleted 在合并时把对应行当作逻辑删除标记处理,FINAL 可在查询期即时生效 ✓ 正确答案
D FINAL 查询会物理删除数据
#

4. SummingMergeTree 在合并时对数值列求和,适合指标聚合

A 它在 INSERT 时立即对数值列求和
B 它可以对所有数据类型列求和
C 它保证查询结果始终是已合并的聚合值
D 它在后台合并时对排序键相同的数值列求和,实现预聚合压缩 ✓ 正确答案
#

5. AggregatingMergeTree 存储 -State 函数预聚合结果

A 它查询时直接返回状态对象本身
B 它只能存储 sum 的预聚合结果
C 它不支持 uniq、quantile 等复杂聚合
D 写入用 -State 后缀函数生成中间状态,查询用 -Merge 函数还原结果 ✓ 正确答案
#

6. CollapsingMergeTree 通过 sign 列标记删除/插入

A sign 取值 0 表示删除,1 表示插入
B sign=1 与 sign=-1 的成对行在合并时被折叠删除,查询需用 SUM(sign) 过滤 ✓ 正确答案
C sign 列只用于排序,不影响合并
D 折叠保证立即生效,无需等待合并
#

7. VersionedCollapsingMergeTree 通过 version 列解决乱序 sign 冲突

A 增加了 sign 列
B 去除了排序键要求
C 引入 version 列,折叠要求 sign 与 version 都成对,解决乱序冲突 ✓ 正确答案
D 改为同步合并
#

8. Kafka 引擎通过 Kafka() 表函数消费主题,支持多消费者组

A 它直接持久化 Kafka 消息到本地存储
B 它通过 Kafka() 表函数消费主题,通常配合物化视图写入目标表,多消费者组用不同 group 隔离 ✓ 正确答案
C 它不依赖 broker 配置
D 它只能支持一个消费者组
#

9. GraphiteMergeTree 直接对接 Graphite 指标

A 为 Graphite 监控指标设计的专用存储引擎,支持 rollup 预聚合与保留策略 ✓ 正确答案
B 通用关系型分析引擎
C 用于存储 Kafka 消息
D 用于分布式 JOIN 计算
#

10. Materialized View 在 ClickHouse 中通过 SELECT...POPULATE 创建,结果写入目标表

A 物化视图自带存储,数据直接存在视图内部
B 它是 INSERT 时触发的处理器,把查询结果写入目标表,POPULATE 用于回填历史数据 ✓ 正确答案
C 物化视图只影响查询,不影响写入
D POPULATE 会删除已有数据
#

11. Kafka 引擎与 Materialized View 协同实现实时 ETL

A 消费 Kafka 消息并持久化
B 只做查询加速,不写任何表
C 替代 Kafka 作为消息队列
D 从 Kafka 表读取并转换后写入目标表,实现实时 ETL ✓ 正确答案
#

12. Distributed 引擎跨分片查询,要求 local 表与 sharding_key 匹配

A 它自身存储数据并实现复制
B 它作为逻辑层,按 sharding_key 把写入分发到本地表,SELECT 跨分片并行聚合 ✓ 正确答案
C 它只支持点查,不支持聚合
D 它不需要本地表存在
#

13. SummingMergeTree、AggregatingMergeTree 与 CollapsingMergeTree 的选型差异(预聚合 vs 增量 vs 取消)

A Summing 支持任意聚合函数
B 三者都只能做求和预聚合
C Collapsing 能存储 uniqState 状态
D Summing 适合简单求和,Aggregating 适合任意聚合状态,Collapsing 适合 sign 增量更新与取消 ✓ 正确答案
#

14. MergeTree 的分区键(PARTITION BY 表达式)粒度如何影响 part 合并范围与分区裁剪?

A 分区越细越好,越多 part 越利于查询
B 分区粒度影响分区裁剪效果与 part 合并范围,需权衡裁剪效率与合并开销 ✓ 正确答案
C 分区与查询无关,只影响写入
D 分区键粒度不影响 part 数量
#

15. Refreshable Materialized View 在 24.9+(24.10 生产可用)支持定期刷新,与增量物化视图的差异?

A 它依赖源表 INSERT 事件实时更新
B 它按固定周期定期刷新,适合周期更新的数据源,与实时增量 MV 机制不同 ✓ 正确答案
C 它是 20.x 版本的稳定特性
D 它刷新时不占用任何资源
#

16. MergeTree 的 TTL 与生命周期,数据过期与冷热分层?

A TTL 可删除过期数据或把数据移动到冷存储卷,实现冷热分层,且后台异步执行 ✓ 正确答案
B TTL 是同步实时执行的
C TTL 与存储策略无关
D TTL 只能删除数据,不能移动数据
#

17. ClickHouse 表引擎家族(MergeTree/Log/Distributed/Buffer)的完整分类与使用场景

A 所有引擎都支持主键与分区
B Log 家族适合临时小数据量,MergeTree 家族是分析主力,Distributed/Buffer 分别用于逻辑分片与缓冲写入 ✓ 正确答案
C Buffer 引擎支持持久化索引
D Log 引擎支持 TTL