Hasty Briefsbeta

双语

The real cost of random I/O

3 months ago
  • #Query Optimization
  • #PostgreSQL
  • #Database Performance
  • PostgreSQL中默认的`random_page_cost`值设为4.0,这个约25年前引入的数值可能已无法反映现代存储设备的实际情况。
  • 实验表明,SSD上随机I/O的实际成本(约25-35)显著高于默认值,这与建议降低该值的观点相矛盾。
  • 成本估算与实际耗时的差异可能导致次优查询计划,特别是在顺序扫描与索引扫描的选择性交叉区间。
  • 位图扫描通过使访问更趋顺序化并支持I/O预取,缓解了部分低效问题,但当前成本模型并未考虑这些优化。
  • 虽然随机I/O的实际成本更高,但在缓存命中率较高的场景或为避免性能陡降时,降低`random_page_cost`仍具合理性。
  • 未来改进方向包括:将非I/O成本从`random_page_cost`分离、优化缓存数据统计估算、以及将预取机制纳入成本计算模型。