【发布时间】:2017-02-14 10:05:24
【问题描述】:
除了简洁易读的语法之外,ActiveRecord 还有其他好处吗? ActiveRecord 是否真的比纯 SQL 占用更多的内存? (我正在使用 PostgreSQL。)
我在 Alexander Dymo 的 blog post on Rails performance 中读到 ActiveRecord 比纯 SQL 占用更多内存:
使用 ActiveRecord 很容易操作数据。但是 ActiveRecord 本质上是数据之上的包装器。如果你有1G的数据 在表中,它的 ActiveRecord 表示将占用 2G,并且在 有些情况,更多。是的,在 90% 的情况下,开销是合理的 您获得的额外便利。但有时你不需要它。
我还在the documentation 中读到 ActiveRecord “更好”:
如果您习惯于使用原始 SQL 来查找数据库记录,那么您 通常会发现有更好的方法来执行相同的操作 Rails 中的操作。 Active Record 使您无需使用 大多数情况下都是 SQL。
我在 Heroku 上遇到过Error R14 (Memory quota exceeded),所以为了解决这个问题,我了解了膨胀和内存泄漏。我已经确定了一些改进方法,包括急切地加载 ActiveRecord 数据,如List.joins(:quantities).find(@list_id),以及减少对数据库的整体调用。但我仍然渴望记忆。
如果 ActiveRecord 的好处只是更容易编写,那么我将尽可能编写纯 SQL。但我希望 SO 社区可以评论权衡并填补我的理解中的任何空白,特别是如果我在离开 AR 之前应该三思而后行。
完全摆脱 AR 会不会很糟糕?
【问题讨论】:
标签: sql ruby-on-rails postgresql heroku rails-activerecord