数据库查询优化器:理想与现实的差距

2025-07-04

数据库查询优化器旨在选择最优查询计划,但其依赖于成本估算,而估算又依赖于选择性和基本资源成本(I/O、CPU等)。本文通过实验揭示了优化器经常出错的情况。实验表明,对于简单的SELECT查询,优化器在不同数据分布下选择查询计划的准确性差异巨大。均匀数据集下,位图扫描通常优于索引扫描;而在其他数据分布下,优化器则更容易选择次优的索引扫描。这说明,即使是简单的查询,优化器的成本模型也难以完美适应各种数据分布和硬件环境。虽然基于成本的规划是目前最好的方法,但提升其鲁棒性和适应性仍然是一个重要的挑战。

阅读更多
开发

利用 BOLT 优化 Postgres 数据库性能

2024-10-05

本文探讨了如何使用 LLVM 项目中的 BOLT 工具来优化 Postgres 数据库的性能。作者首先介绍了二进制布局对性能的影响,以及 Stabilizer 和 BOLT 工具如何解决这个问题。随后,作者详细介绍了如何使用 BOLT 对 Postgres 进行优化,包括安装、配置和运行 BOLT。最后,作者通过 pgbench 和 TPC-H 基准测试,展示了 BOLT 优化带来的显著性能提升,并讨论了不同优化配置文件对性能的影响。

阅读更多
25
未分类