我很好奇是否有任何方法可以提示 postgresql 哪些数据更可能缓存在内存中。在我的场景中,服务器将主要处理读取流量,整个数据集比可用内存大得多,但一些表 [不一定是最常访问的] 应该存储在内存中,而其他不需要高性能和可以从磁盘访问。
我知道 memcached 或类似的可能是合理的解决方法,但也许这一切都可以在没有它的情况下完成。
这个问题更适合stackoverflow吗?
我很好奇是否有任何方法可以提示 postgresql 哪些数据更可能缓存在内存中。在我的场景中,服务器将主要处理读取流量,整个数据集比可用内存大得多,但一些表 [不一定是最常访问的] 应该存储在内存中,而其他不需要高性能和可以从磁盘访问。
我知道 memcached 或类似的可能是合理的解决方法,但也许这一切都可以在没有它的情况下完成。
这个问题更适合stackoverflow吗?
没有办法提示 PostgreSQL 关于你的缓存。在大多数情况下,您不需要 - 最常用的表部分将被缓存。它并不像“这张表最常用,让我们缓存这张表”那么天真,它确实考虑了其他事情。(例如,大表的顺序扫描仍然不允许用完完整的缓冲区缓存)
您可以做的解决方法是将热表放在不同的表空间中,安装在不同的分区上,并调整该分区的操作系统缓存参数(当然,如果这在操作系统级别上可行的话)。PostgreSQL 在很大程度上依赖于操作系统级别的文件系统缓存,因此如果您可以根据需要调整该缓存,那可以解决您的问题。