Warda Bibi:PostgreSQL如何扫描您的数据
💡
原文英文,约2000词,阅读约需8分钟。
📝
内容提要
PostgreSQL通过顺序扫描、索引扫描和位图扫描等不同策略读取数据。表以8KB页面存储,每个元组包含可见性信息。顺序扫描逐页读取,索引扫描通过索引查找,位图扫描先构建位图再读取。可见性图优化提升性能,降低CPU开销。选择扫描策略时,PostgreSQL利用成本模型评估最佳方案。
🎯
关键要点
- PostgreSQL通过8KB页面存储数据,每个元组包含可见性信息。
- 顺序扫描是PostgreSQL的基本访问方法,逐页读取表中的数据。
- 可见性图优化提升性能,减少CPU开销。
- 同步扫描协调多个后端的顺序扫描,减少冗余工作。
- 并行顺序扫描通过多个工作进程加快大表的扫描速度。
- PostgreSQL使用成本模型选择最佳扫描策略。
- 索引扫描通过索引查找匹配行,避免全表扫描。
- HOT更新避免了索引膨胀,保持索引小而干净。
- 索引仅扫描在索引中满足查询条件的情况下跳过堆读取。
- 位图扫描在匹配行过多时提高效率,分为构建位图和按顺序读取堆页面两个阶段。
- 精确与模糊位图的选择取决于内存限制,影响后续的行检查。
- 位图扫描可以结合多个索引,提高查询效率。
- PostgreSQL规划器使用成本模型选择访问方法,考虑选择性和行匹配情况。
🏷️
标签
➡️