PostgreSQL 架构原理第四期:查询优化器 —— 统计信息与代价模型
PostgreSQL 架构原理第四期:查询优化器 —— 统计信息与代价模型 引言 在前三期的基础上,我们已经了解了 PostgreSQL 的进程模型、存储引擎以及事务并发控制。从用户提交一条 SQL 到真正执行,中间有一个至关重要的环节——查询优化器。它负责在众多可能的执行路径中,找出预计代价最小的那个执行计划。优化器之所以能做出相对准确的决策,核心依赖于两样东西:表的统计信息 和 代价模型。 本期我们将深入剖析: 统计信息的收集与存储:ANALYZE 命令、pg_statistic 系统表、pg_class 中的基本统计 最常见的数据分布:NULL 分数、唯一值数量、高频值(MCV)、直方图 代价模型中的启动代价、运行代价、总代价以及各种操作的代价估算公式 […]