# 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