DuckDB 技术文档

从 SQL 进入系统到向量化执行与性能诊断,沿查询生命周期梳理 DuckDB 的核心机制。

这组文档来自我对 DuckDB 执行引擎和相关源码的持续阅读。重点不是罗列类名,而是解释各模块为什么存在、如何协作,以及性能问题应该怎样定位。内容仅讨论 DuckDB 上游公开机制,不包含实习公司的内部实现或适配细节。

SQLBinderLogical PlanOptimizerPhysical PlanPipelineDataChunk
1

01 · 整体架构与查询生命周期

一条 SQL 如何依次经过解析、绑定、优化、物理计划生成,并最终被拆成可以并行执行的任务。

Parser · Binder · Logical Plan · Physical Plan · Executor
2

02 · Binder 与逻辑计划

从只有名字的语法树出发,理解作用域解析、类型推导、函数重载与 ColumnBinding 如何构成后续优化的语义基础。

Binder · Catalog · Type Resolution · ColumnBinding · LogicalOperator
3

03 · 优化器与计划重写

理解规则优化、统计信息与 Join Order 如何协作,以及如何判断一个优化究竟减少了什么工作量。

Expression Rewrite · Filter Pushdown · Join Order · Cardinality · TopN
4

04 · DataChunk 与向量化执行

从 DataChunk、Vector、SelectionVector 和 UnifiedVectorFormat 出发,理解 DuckDB 如何用批处理摊薄解释开销并改善数据局部性。

DataChunk · Vector · SelectionVector · ValidityMask · Vectorized Execution
5

05 · Pipeline、Event 与并行调度

解释物理算子树如何按阻塞边界切成 Pipeline,Event 如何表达依赖,TaskScheduler 又如何把工作分配给线程。

Pipeline · MetaPipeline · Event · Task · TaskScheduler
6

06 · Join、Aggregation 与阻塞算子

以 Hash Join 和分组聚合为主线,理解 build/probe、局部状态合并、数据倾斜、NULL 语义与算法选择。

Hash Join · Build Probe · Hash Aggregate · Radix Partitioning · Skew
7

07 · 内存、存储与落盘

区分 Buffer Manager、算子临时状态与进程内存,理解列式存储、MVCC、WAL,以及大于内存查询如何通过临时文件继续执行。

Buffer Manager · Spilling · Columnar Storage · MVCC · WAL
8

08 · Profiling、源码调试与性能方法

建立从端到端基准、执行计划、算子指标到 CPU Profile 的分层诊断方法,并避免常见的性能测试误区。

EXPLAIN ANALYZE · QueryProfiler · Benchmark · Flame Graph · Performance Debugging

阅读建议:先读第 1 章建立全局结构,再重点阅读第 4、5、6 章理解执行引擎。第 8 章可以作为日常性能排查清单独立使用。