1

在起重机及以上的Heroku DB 计划中,缓存不是 0 字节。

这是否意味着在这些计划中,如果代码有

User.find(10)

例如,那么查询的结果会被保存吗?从而提高数据库查询的性能?

4

1 回答 1

3

PostgreSQL 没有查询结果缓存。除非 Heroku 在他们的自定义内部 PostgreSQL 分支中添加了一个(非常不可能),否则它很可能是数据库可用的磁盘缓存,用于存储从磁盘读取的表和索引的内容,因此不必重新读取它们。再次访问。这是块级缓存,而不是查询级或行级缓存。

大量用于缓存的 RAM 会对 PostgreSQL 性能产生巨大影响,尤其是在 I/O 性能较差的设置(如 Amazon EC2)上。

一些应用程序级别的工具,如 Hibernate ORM 和其他 JPA 实现确实维护查询结果缓存,或者更确切地说是实体缓存。我不知道 ActiveRecord 是否这样做,但如果这样做,它将在应用程序服务器端,而不是数据库端。

于 2013-01-15T12:38:14.763 回答