# 1. 分布式聚合(部分聚合+最终聚合)的两阶段下推 A COUNT/SUM/AVG 等可分解聚合可先本地部分聚合再汇总,大幅减少网络传输;COUNT DISTINCT 等不可分解聚合需保留中间状态或近似 ✓ 正确答案 B 所有聚合函数都可直接两阶段合并 C 两阶段聚合只减少计算,不减少网络 D 部分聚合必须在协调器执行
# 2. 分布式 Join,Broadcast Join 与 Shuffle Hash Join 选型 A 小表 join 大表用 Broadcast(只传小表)更省,大表 join 大表用 Shuffle Hash Join,优化器按表大小与倾斜选型 ✓ 正确答案 B 大表 join 大表用 Broadcast 最优 C 任何 join 都用 Shuffle 最优 D Broadcast 无法用于 Hash Join
# 3. 分布式 Sort/Merge 与数据倾斜处理 A 分布式排序采用分区+局部排序+全局归并,数据倾斜会让某节点成为瓶颈,可用 range 分区或加盐打散缓解 ✓ 正确答案 B 分布式排序只需单节点完成 C 倾斜不影响排序性能 D 哈希分区总能保证全局有序且无倾斜
# 4. 分布式窗口函数的分区与排序下推 A 窗口函数无需分区,任意节点可算 B 排序对窗口函数无关紧要 C 窗口函数不能分布式执行 D 需按 PARTITION BY 分区键重分布使同分区数据同节点,再节点内排序计算;分区键与分布键一致时可避免重分布 ✓ 正确答案
# 5. 数据重分布(Exchange)的网络开销优化 A 重分布无法优化 B 网络压缩会增加更多开销 C 可通过分布键对齐避免不必要 shuffle、广播小表、压缩/批量传输、下推与裁剪来减少跨节点数据量 ✓ 正确答案 D 数据量越大反而越省
# 6. 数据倾斜(热点 Key)对分布式聚合/Join 的危害 A 倾斜不影响性能 B 倾斜只影响单机,不影响分布式 C 热点 key 使数据集中在少数节点,这些节点成为瓶颈,导致查询被拖慢、内存溢出或 spill,呈木桶效应 ✓ 正确答案 D 倾斜让所有节点负载一致
# 7. 倾斜 Join 的单独处理(skew join)优化 A skew join 对所有 join 都启用 B skew join 与普通 join 完全相同 C skew join 会消除所有数据 D skew join 识别倾斜 key,将其加盐拆分复制到多节点并行处理,非倾斜部分走普通 join,从而缓解单个热点节点过载 ✓ 正确答案
# 8. MPP 的资源队列(Resource Queue)与并发控制 A 资源队列不限制并发 B 资源队列限制并发查询数并分配 CPU/内存配额,超额查询排队等待,实现资源隔离与并发控制 ✓ 正确答案 C 所有查询共享无限资源 D 资源队列只能限内存,不能限并发
# 9. 分布式 Limit/TopN 的局部+全局合并 A 必须把所有数据传到协调器再取前 N B TopN 只能在单节点执行 C 局部 TopN 无法与全局合并 D 各节点先算局部 TopN 再上传,协调器做全局合并,早期丢弃大量数据以减少传输 ✓ 正确答案
# 10. 分布式 Union/Subquery 的去重与执行 A Union 无需去重 B Union All 无需去重可直接并行拼接;Union 需重分布后本地去重实现全局唯一,可下推的子查询先在各节点执行 ✓ 正确答案 C 去重只能在协调器完成 D 子查询不能下推
# 11. 加盐(salt)打散倾斜 Key 的重分布技巧 A 加盐会丢失数据 B 加盐只适用于单节点 C 给倾斜 key 拼随机盐值分散到多节点并行处理,再按原 key 汇总还原;join 侧需复制匹配,聚合需可分解 ✓ 正确答案 D 加盐后无需再合并
# 12. 广播小表避免 Shuffle 的阈值判断 A 任何表都广播 B 阈值判断与表大小无关 C 广播永远优于 shuffle D 优化器按小表大小与广播阈值比较,小表够小则广播避免 shuffle,否则用 shuffle,防止广播过大内存爆炸 ✓ 正确答案
# 13. 动态分区裁剪(Dynamic Partition Pruning) A 它只裁剪常量分区 B 动态裁剪与静态裁剪完全相同 C 它根据运行时得到的 join key 集合动态裁剪扫描分区,常配合 join 先处理小表再过滤大表,减少扫描量 ✓ 正确答案 D 动态裁剪不减少 IO
# 14. 多租户资源池(Resource Group)隔离 A 为不同租户划分 CPU/内存/并发配额,实现隔离与公平,防止一个租户耗尽另一个租户的资源 ✓ 正确答案 B 所有租户共享一个无限资源池 C 资源池只能系统管理员使用 D 资源池无法限制并发
# 15. 分布式执行的算子并行度与调度 A 并行度固定为 1 B 调度与并行度无关 C 并行度越高性能越好,无上限 D 并行度由节点数、分片数与并行参数决定,调度器分配算子到节点并管理资源,需平衡并行充分与资源竞争 ✓ 正确答案
# 16. 运行时统计反馈驱动的自适应重分布 A 执行计划完全固定,无法调整 B 运行时统计与执行无关 C 自适应只影响单节点 D 根据运行时采集的节点数据量、倾斜等统计信息动态调整重分布策略与并行度,应对统计不准与倾斜 ✓ 正确答案
# 17. 分布式执行计划的可视化与瓶颈定位 A 可视化展示各算子的耗时、数据量、节点分布与重分布,可据此定位重分布、倾斜、spill 等瓶颈 ✓ 正确答案 B 执行计划无法可视化 C 所有算子耗时相同 D 瓶颈只发生在单节点
# 18. 重分布网络的压缩与批量发送 A 通过压缩减少传输字节、批量发送减少发包次数,降低重分布网络开销,但需权衡 CPU 与缓冲成本 ✓ 正确答案 B 重分布数据不能压缩 C 批量发送会让网络更慢 D 压缩只用于存储,不用于网络
# 19. 查询级的 CPU/内存配额与隔离 A 为单个查询设置内存/CPU 配额,超限则 spill 或拒绝,配合资源池防止单个查询拖垮系统 ✓ 正确答案 B 单查询可无限使用资源 C 配额只针对存储 D 查询级隔离无法实现
# 20. 数据库大查询排队与优先级调度如何设计,如何防止长查询拖垮并发? A 大查询应无限并发执行 B 通过并发上限让大查询排队、按优先级调度、设置资源配额与超时,防止长查询耗尽资源拖垮并发 ✓ 正确答案 C 优先级调度只影响读 D 长查询不需要任何限制
# 21. 查询超时与取消的传播,客户端超时如何传递到数据库层并中止执行,statement_timeout 与锁等待超时的协同,取消对长事务的影响? A 客户端超时不会影响数据库 B statement_timeout 只影响锁等待 C 客户端超时经驱动发取消信号中止语句;statement_timeout 管整体执行、lock_timeout 管锁等待,取消对未提交长事务可能导致回滚并释放锁 ✓ 正确答案 D 取消长事务没有任何影响
# 22. MPP 的水平扩展与数据再平衡 A 加节点后无需任何处理 B 再平衡瞬间完成 C 水平扩展加节点后需做数据再平衡使各节点均衡,否则新节点闲置、旧节点过载,再平衡是重操作需低峰期执行 ✓ 正确答案 D 再平衡只影响新节点
# 23. MPP 的弹性(按需扩缩)能力差异 A 传统 MPP 扩容需数据再平衡,弹性较重;云原生 MPP 存算分离可独立快速伸缩计算节点,无需重分布 ✓ 正确答案 B 所有 MPP 弹性能力相同 C 云原生 MPP 无法扩容 D 弹性与数据分布无关
# 24. MPP 的向量化执行与批处理 A 向量化一次处理一批数据并配合 SIMD 批量运算,配合列式存储大幅降低逐行开销,提升吞吐 ✓ 正确答案 B 向量化按行处理,效率低 C 向量化只影响存储 D 批处理与列式无关