我很好奇,如果有什么办法提示postgresql哪些数据应该更可能caching在内存中。 在我的情况下,服务器将主要处理读取stream量,整个数据集比可用内存大得多,但是一些表(不一定是最常访问的)应该存储在内存中,而其他表不需要高性能可以从磁盘访问。
我知道memcached或类似可以是合理的解决方法,但也许这一切都可以没有这样做。
这个问题更适合于stackoverflow吗?
没有办法提示PostgreSQL你的caching。 在大多数情况下,你不需要 – 表中最常用的部分将被caching。 它不像“这张桌子最常用,让我们caching这张桌子”那样幼稚,它确实使其他东西变得一致。 (例如,大型表中的连续扫描仍然不允许使用完整的缓冲区caching)
您可以做的解决方法是将热表放入不同的表空间,安装在不同的分区上,并调整该分区的操作系统caching参数(当然,如果可能的话)。 PostgreSQL非常依赖操作系统级别的文件系统caching,所以如果你可以根据自己的需要调整这个caching,那可以解决你的问题。