ruby-on-rails - 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 并没有在这个查询中使用该索引。
这个问题的根源是对模型的验证。见下文;分享您的知识,问答式
解决方案
这个问题的根源是对模型的验证
验证:字段,存在:true,唯一性:{ case_sensitive: false }
变成..
验证:field,存在:true,唯一性:true,如果::field_changed?
更改了其余代码以确保字段始终为小写。必须说,New Relic 是一个很棒的工具包,在运行应用程序时有很大的帮助。
推荐阅读
- java - 如何为超类中的 List 元素使用不同的子类
- ruby-on-rails - Chartkick - 以百分比表示的堆积垂直图
- apache-kafka - 动态路由/复制到 Kafka 2 中的多个主题
- python - 如何使用 __str__ 更改对象属性的显示方式?
- node.js - 我如何解析来自 nrf24 缓冲区的 JSON?
- react-router - 反应路由器订购
- javascript - 如何将我的 postgis 点加载到传单中
- r - 带有 4 个图表堆栈的 flexdashboard
- angular - 角度别名路径在 Intellij 中没有得到解决
- r - R 中的简单模拟:随机模拟均值与截断正态期望不匹配