Ruby 2.7.6 (heroku-20) 和 Ruby 3.1.4 (heroku-22) 之间的数据库查询速度明显变慢

Significantly slower DB queries between Ruby 2.7.6 (heroku-20) and Ruby 3.1.4 (heroku-22)

提问人:Tony Beninate 提问时间:7/15/2023 最后编辑:Tony Beninate 更新时间:7/16/2023 访问量:32

问:

我有一个在 Heroku 上运行的 Ruby 2.7.6 应用程序(堆栈 heroku-20)和在 Heroku 上运行的 Ruby 3.1.4 上的同一应用程序的分支(堆栈 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 提出的一个问题,但我只是想检查一下我这里是否还缺少我应该注意的其他东西。

更新事实证明,在这个特定环境中,数据库一定出了点问题。删除并重建(使用相同的生产数据)后,它又变得活泼了。

红宝石 heroku heroku-postgres ruby-3

评论

0赞 spickermann 7/15/2023
您是否在与测功机相同的区域启动了数据库?
0赞 Tony Beninate 7/15/2023
@spickermann不确定,不确定如何在 Heroku 上控制它。不过,我应该指出,如果我将我们的 Heroku-22 环境回滚到 Heroku-20 和 Ruby 2,查询时间会再次很快,所以我不确定这是否是一个区域问题。
0赞 spickermann 7/15/2023
是 Heroku 上的应用程序和数据库,您更新到 Stack-22 和 Ruby 3 吗?或者您是否为新环境创建了一个具有新数据库的新应用程序?
2赞 spickermann 7/16/2023
我会尝试使用 PostgreSQL 客户端直接连接到数据库,并在没有 Rails 的情况下直接对数据库运行这两个查询。
1赞 Tony Beninate 7/16/2023
@spickermann很好。我在慢速环境下删除并重建了数据库,一切又变得活泼了!不知道那里发生了什么。谢谢你帮我思考这个问题。

答: 暂无答案