性能考古学:OLAP

主要观点:

  • 对比 Postgres 8.0 以来在 OLTP 和分析工作负载方面的性能改进,本文重点关注分析工作负载的 TPC-H 基准测试。
  • 强调使用较旧但配置相同的“i5”机器进行测试以保证公平性,分析查询更复杂,不依赖高并发和多核。
  • TPC-H 是分析基准测试的标准,虽有局限性但能反映数据库引擎的部分性能。
  • 展示了数据加载、查询(未缓存和缓存)的性能改进及回归情况,主要改进包括 bitmap 索引扫描、预读、索引仅扫描、并行性等,Postgres 11 后性能大多不变,JIT 效果有限。
  • 认为未来大幅改进需要重大架构变化,如采用列式存储和专门的执行引擎,也有尝试将 Postgres 作为接口将分析查询卸载到其他引擎。

关键信息:

  • 硬件配置:i5 - 2500k(4 核/4 线程)、16GB RAM、6x Intel DC S3700 100GB(SATA SSD,RAID0)、Debian 12.7(内核 6.10)、ext4、gcc 12.2.0。
  • TPC-H 数据:10GB 数据集,表占用约 13GB 磁盘空间,索引占用 30GB。
  • postgresql.conf 配置:共享缓冲区 262143、检查点超时 1800 等一系列配置。
  • 数据加载性能改进:8.0 - 8.3 主要在 COPY 和 CREATE INDEX 阶段,9.5/9.6 在 CREATE INDEX 阶段有显著改进。
  • 查询性能:未缓存时 8.0 - 8.2 有大幅提升,缓存时整体形状与未缓存相似但部分查询更敏感于 I/O。
  • 回归情况:多为 GUC 默认值变化导致计划选择改变,可通过调整配置修复,部署新主版本后需验证性能。
  • 未来改进方向:需重大架构变化,如采用新的存储和执行方式,或利用 Postgres 作为接口将查询卸载到其他引擎。

重要细节:

  • 对比不同版本 Postgres 在分析工作负载下的各种性能指标。
  • 详细介绍 TPC-H 基准测试的相关内容及数据处理。
  • 分析各个性能改进点的原因及影响。
  • 阐述回归情况出现的原因及解决方法。
  • 提及未来可能的改进途径及面临的挑战。
阅读 7
0 条评论