PostgreSQL默认的random_page_cost=4.0基于2002年机械硬盘假设,在SSD上导致查询计划错误选择全表扫描。将参数设为1.1后,查询从125.98ms降至68.69ms,提升1.83倍;添加覆盖索引可进一步降至41.16ms。建议根据缓存命中率调整此参数,并验证实际效果。
文章讨论了Postgres中的random_page_cost参数及其对性能的影响。作者认为传统成本模型未能准确考虑内存和缓存效应,因此调整random_page_cost可能会影响查询性能。通过分析不同存储设备的表现,作者建议根据具体系统调整random_page_cost,以优化查询计划并保持活跃数据集在内存中。
Postgres 的 random_page_cost 默认值 4.0 基于机械硬盘,使优化器偏好顺序扫描而弃用复合部分索引,查询耗时约 11 秒;降至 1.1 后优化器改用索引,查询降至约 1.5 毫秒。建议谨慎调优,仅用于确认存在有效索引的查询,并可在 Rails 中按查询临时设置。
完成下面两步后,将自动完成登录并继续当前操作。