请解释 Apache Doris 中的 compaction 机制,并阐述它在数据存储方面所发挥的作用。
考察说明
考查对 Doris 底层存储机制的理解,特别是 compaction 如何优化存储和查询性能。
回答思路
- 【回答框架 1】Doris 采用类似 LSM-Tree 的存储结构,数据以行集(Rowset)形式存在,compaction 是将多个小行集合并成大的行集的过程。
- 【回答框架 2】compaction 分为两种:Base Compaction 将基础数据合并,Cumulative Compaction 逐步合并新写入的数据,以控制版本数量和删除过期数据。
- 【回答框架 3】在存储中的作用:减少文件数量,降低元数据开销,合并删除标记,回收空间,提升查询效率,避免读放大和空间放大。
- 【回答框架 4】compaction 是异步后台任务,由系统自动触发,策略基于版本数、大小等因素,同时可手动触发。
- 【关键点 1】compaction 是类似 LSM-Tree 的合并机制,目的是减少小文件、提升查询性能。
- 【关键点 2】合并过程会消除已删除数据,回收存储空间。
- 【关键点 3】compaction 自动后台执行,不影响数据写入。
- 【易错点 1】误认为 compaction 是立即执行的,实际是异步触发。
- 【易错点 2】忽略 compaction 对 IO 和 CPU 资源的占用,可能影响查询延迟。
- 【易错点 3】混淆 compact 和 merge 的概念,Doris 中 compaction 特指行集合并。