更改ActiveRecord语句缓存默认Rails



我怀疑我的应用程序内存泄漏,我读到rails正在自动管理最近1000次查询执行的缓存。我的应用程序中几乎每个查询都是唯一的,而且非常重,并且包含许多返回的行。

那么,有没有一种方法可以更改语句缓存的默认值
(我使用的是postgres DB)

它是在数据库适配器级别处理的。Postgresql适配器中有一个statement_limit配置选项。

您需要将其添加到database.yml

production:
adapter: postgresql
statement_limit: 200

点击此链接获取官方文档。有一个选项可以完全禁用语句缓存。

production:
adapter: postgresql
prepared_statements: false

其次,还有一个选项可以清除postgres适配器中的statement cache。有一个名为clear_cache!的方法,可以在Postgres适配器中找到

这里就同一件事进行了很好的讨论。您将在以下链接中找到所有详细信息

Rails有许多内置的缓存策略,但它们都不是基于查询数本身的。如果缓存有限,则基于file size过期时间

如果应用程序正在使用内存存储,则默认文件大小限制为32Mb。这可以通过在配置中添加以下行来更改:

config.cache_store = :memory_store, { size: 64.megabytes }

关于这一点的官方文档,以及许多其他形式的缓存,可以在这里找到。

考虑到您明显需要这种密集型缓存,我建议您也考虑各种其他选项,如碎片缓存和Russian doll缓存,因为这可能是一种比单独使用SQL缓存资源密集度低得多的策略。

最新更新