我刚刚将Heroku postgres数据库从Kappa计划(800MB RAM,postgres 9.1)升级到Ronin计划(1.7GB RAM,postgres 9.2),但是性能下降了。
按照here指南,我进行了检查,发现缓存命中率甚至比我们的Kappa数据库要低(现在约为57%,之前约为69%)。我们的应用程序设计应该还可以,因为我们之前看到的缓存命中率约为99%。
建议数据集应该能够放入内存中,这现在不应该成为问题-我们的数据大小为1.27GB(至少应该容纳大部分)。
高速缓存命中率低是由于数据大小引起的,还是我还有其他需要研究的东西?还是仅仅是数据库缓存没有完全预热的情况? (已经快两天了)
最佳答案
如果您有足够的内存并且没有在数据库上运行太多其他内容,则可能会更改的一件事是shared_buffers。共享缓冲区的作用是它们缓存经常使用的数据,以便在并非所有数据库都适合内存的情况下使数据最大化。
不幸的是,此缓存的性能不如操作系统缓存。如果您的数据很容易放入内存,请确保effective_cache_size
足够高,然后尝试减少shared_buffers
请注意,这不是 Elixir 。 shared_buffers
的适当大小取决于您拥有多少数据,占用多少空间,查询的类型,用于诸如排序之类的事情的内存量。您可能会不时尝试一下,以找到当前设置和数据库的最佳位置。
关于postgresql - Postgres高速缓存命中率低-数据大小还是其他?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16806064/