Ruby 2.7.6(heroku-20)与Ruby3.1.4(heroku-22)数据库查询性能差异
Ruby 3.1.4 + Heroku-22 环境下数据库查询性能骤降问题排查
我有两个分支的Ruby应用:
- 主分支基于Ruby 2.7.6,部署在Heroku heroku-20栈
- 测试分支基于Ruby 3.1.4,部署在Heroku heroku-22栈
两者连接完全相同的数据库。本地运行两个分支时,数据库查询耗时基本一致,但在Heroku上,Ruby 3版本的所有查询速度都显著变慢,部分场景甚至慢10倍以上。
以下是差异最明显的查询日志示例:
# Ruby 2.7.6 on Heroku-20 participant_registration.session_results.count D, [2023-07-15T15:10:25.598762 #2] DEBUG -- : (85.0ms) SELECT COUNT(*) FROM "session_results" WHERE "session_results"."sessionable_id" = $1 AND "session_results"."sessionable_type" = $2 [["sessionable_id", 82497], ["sessionable_type", "UserChampionship"]] # Ruby 3.1.4 on Heroku-22 participant_registration.session_results.count D, [2023-07-15T15:10:43.115159 #2] DEBUG -- : (1167.6ms) SELECT COUNT(*) FROM "session_results" WHERE "session_results"."sessionable_id" = $1 AND "session_results"."sessionable_type" = $2 [["sessionable_id", 82497], ["sessionable_type", "UserChampionship"]]
最初不确定是否需要向Heroku反馈该问题,先自行排查是否存在遗漏的注意事项。
更新:经排查,问题根源在该测试环境关联的数据库实例上。删除并重建数据库(保留生产数据)后,查询速度恢复正常。
内容的提问来源于Stack Exchange,提问作者Tony Beninate
相关产品推荐
相关产品推荐

