首页 > 解决方案 > ActiveRecord 模型是否存在?运行缓慢 - 找到解决方案

问题描述

我花了很长时间试图追查这个问题,所以我想我会在这里发布我的经验,以防其他人有同样的问题。

在 Heroku 上运行 Rails 6.1.1。开始注意到 Heroku 指标中关键响应时间的报告。进入New Relic,它报告了罪犯。

model_controller#update.. ActiveRecord 模型存在吗?平均时间 522ms

最终在触发时在本地开发机器上注意到以下内容model_controller#update

模型存在吗?(490.2 毫秒)从“模型”中选择 1 作为一个,其中 LOWER(“模型”。“字段”)= LOWER($1)和“”。“id”!= $2 限制 $3

尽管模型上的字段是一个索引,但 Postrgres 并没有在这个查询中使用该索引。

这个问题的根源是对模型的验证。见下文;分享您的知识,问答式

标签: ruby-on-railsperformancenewrelicheroku-postgres

解决方案


这个问题的根源是对模型的验证

验证:字段,存在:true,唯一性:{ case_sensitive: false }

变成..

验证:field,存在:true,唯一性:true,如果::field_changed?

更改了其余代码以确保字段始终为小写。必须说,New Relic 是一个很棒的工具包,在运行应用程序时有很大的帮助。


推荐阅读