这组文档来自我对 DuckDB 执行引擎和相关源码的持续阅读。重点不是罗列类名,而是解释各模块为什么存在、如何协作,以及性能问题应该怎样定位。内容仅讨论 DuckDB 上游公开机制,不包含实习公司的内部实现或适配细节。
SQLBinderLogical PlanOptimizerPhysical PlanPipelineDataChunk
01 · 整体架构与查询生命周期
一条 SQL 如何依次经过解析、绑定、优化、物理计划生成,并最终被拆成可以并行执行的任务。
Parser · Binder · Logical Plan · Physical Plan · Executor02 · Binder 与逻辑计划
从只有名字的语法树出发,理解作用域解析、类型推导、函数重载与 ColumnBinding 如何构成后续优化的语义基础。
Binder · Catalog · Type Resolution · ColumnBinding · LogicalOperator03 · 优化器与计划重写
理解规则优化、统计信息与 Join Order 如何协作,以及如何判断一个优化究竟减少了什么工作量。
Expression Rewrite · Filter Pushdown · Join Order · Cardinality · TopN04 · DataChunk 与向量化执行
从 DataChunk、Vector、SelectionVector 和 UnifiedVectorFormat 出发,理解 DuckDB 如何用批处理摊薄解释开销并改善数据局部性。
DataChunk · Vector · SelectionVector · ValidityMask · Vectorized Execution05 · Pipeline、Event 与并行调度
解释物理算子树如何按阻塞边界切成 Pipeline,Event 如何表达依赖,TaskScheduler 又如何把工作分配给线程。
Pipeline · MetaPipeline · Event · Task · TaskScheduler06 · Join、Aggregation 与阻塞算子
以 Hash Join 和分组聚合为主线,理解 build/probe、局部状态合并、数据倾斜、NULL 语义与算法选择。
Hash Join · Build Probe · Hash Aggregate · Radix Partitioning · Skew07 · 内存、存储与落盘
区分 Buffer Manager、算子临时状态与进程内存,理解列式存储、MVCC、WAL,以及大于内存查询如何通过临时文件继续执行。
Buffer Manager · Spilling · Columnar Storage · MVCC · WAL08 · Profiling、源码调试与性能方法
建立从端到端基准、执行计划、算子指标到 CPU Profile 的分层诊断方法,并避免常见的性能测试误区。
EXPLAIN ANALYZE · QueryProfiler · Benchmark · Flame Graph · Performance Debugging阅读建议:先读第 1 章建立全局结构,再重点阅读第 4、5、6 章理解执行引擎。第 8 章可以作为日常性能排查清单独立使用。