postgresql - 低 Postgres 缓存命中率 - 数据大小或其他?

标签 postgresql heroku postgresql-9.1 postgresql-9.2 heroku-postgres

我刚刚将我的 Heroku postgres 数据库从 Kappa 计划(800MB RAM,postgres 9.1)升级到 Ronin 计划(1.7GB RAM,postgres 9.2),但性能下降了。

遵循指南 here ,我检查了一下,缓存命中率甚至低于我们的 Kappa 数据库(现在约为 57%,之前约为 69%)。我们的应用程序设计应该还不错,因为我们之前看到的缓存命中率约为 99%。

建议数据集应该能够装入内存,这现在应该不是问题 - 我们的数据大小是 1.27GB(至少大部分应该适合)。

缓存命中率低是数据大小造成的,还是有其他我可以调查的问题?或者仅仅是数据库缓存没有完全预热的情况? (已经快2天了)

最佳答案

如果您有足够的内存并且没有在数据库上运行太多其他东西,那么可能会改变的一件事是 shared_buffers。共享缓冲区的作用是缓存经常使用的数据,以便在并非所有数据库都适合内存时它可以最大化吞吐量。

不幸的是,此缓存的性能不如操作系统缓存。如果您的数据很容易装入内存,请确保 effective_cache_size 足够大,然后尝试减少 shared_buffers

请注意,这不是 Elixir 。 shared_buffers 的适当大小取决于您有多少数据、它占用多少空间、您的查询类型、有多少内存用于排序等。您可以期望不时尝试使用它来找到当前设置和数据库的最佳位置。

关于postgresql - 低 Postgres 缓存命中率 - 数据大小或其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16806064/

相关文章:

node.js - Heroku NodeJS 部署

postgresql - Postgresql 9.1 中 array_agg 的限制

sql - 添加两个简单的索引来优化查询

php - 在查询中使用 "WHERE"时 PDO 失败

json - postgres 存储对 json 中字段的引用

postgresql - 以毫秒为单位获取间隔

sql - Postgres : Find "from this table" foreign keys (Faster alternative)

sql - 用单引号替换为双单引号在 PostgreSQL 12 中不起作用

django - 如何将 Django post_save 信号作为后台进程运行?

java - 使用 Jersey 测试框架的 Maven 构建错误