Heroku Postgres缓存命中率为何无法提升?

1cosmwyk  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(147)

我正在将一个数据库迁移到heroku。我正在使用pg:diagnose来尝试并确保数据库将平稳运行。
昨天我注意到我的“整体缓存命中率”大约是94%,低于推荐的99%。我的数据库运行在“Premium 3”层,它有15 GB的RAM。所以我决定升级到一个有更多RAM的计划,希望这会导致更高的缓存命中率。我切换到“Standard 4”,它的RAM增加了一倍多。一开始该高速缓存命中率很低,但那是因为它很冷。
但现在是第二天,该高速缓存是热的,我的“整体缓存命中率”回到了94%,就在它开始的地方!我一定错过了什么-我把RAM增加了一倍,但我没有得到任何更多的缓存命中?
我会考虑升级到一个更高的计划,但升级计划似乎没有帮助。我的数据大小是38.9 GB,我目前的计划有30.5 GB的RAM。
提前感谢任何人谁可以帮助我了解这里发生了什么事!

mcdcgff0

mcdcgff01#

你在pg:diagnose中看到的缓存命中率的测量方法和PostgreSQL本身得出的方法是一样的--它认为在shared_buffers中找到的所有东西都是命中,其他的都是未命中。但是对于未命中,很多也可以在内存中找到,这只是内核的文件缓存内存,而不是PostgreSQL的shared_buffers。从性能的Angular 来看,这也应该是命中,但是没有机制来计算它们。
我不知道heroku是如何管理shared_buffers的。如果增加示例大小时shared_buffers保持不变,那么即使真实的命中率增加了,报告的命中率也会保持不变(即更多的缓冲区未命中是从文件缓存中提供的,而不是真正从磁盘中读取)。

相关问题