如何将整个PostgreSql数据库放入RAM以便更快地访问?我有8GB内存,想为数据库分配2GB。我已经了解了共享缓冲区设置,但它只缓存最常访问的数据库片段。我需要一个解决方案,可以将整个数据库放入RAM,任何读取操作都将从RAM数据库中进行,任何写入操作都将首先写入RAM数据库,然后再写入硬盘上的数据库(类似于postgresql配置设置中默认的fsync=on和共享缓冲区)。
如何将整个PostgreSql数据库放入RAM以便更快地访问?我有8GB内存,想为数据库分配2GB。我已经了解了共享缓冲区设置,但它只缓存最常访问的数据库片段。我需要一个解决方案,可以将整个数据库放入RAM,任何读取操作都将从RAM数据库中进行,任何写入操作都将首先写入RAM数据库,然后再写入硬盘上的数据库(类似于postgresql配置设置中默认的fsync=on和共享缓冲区)。
建立一个老式的RAM磁盘,并告诉pg将其数据存储在那里。
但一定要确保备份得好。
我自己还没有尝试过,但是:
理论上,可以将两者结合起来。
如果您这样做,您可能还想调整seq_page_cost和random_page_cost以反映相对存储成本。请参见https://www.postgresql.org/docs/current/runtime-config-query.html
查询优化和增加shared_buffers的预先存在的建议仍然适用。如果您在这么小的数据库上遇到这些问题,那么只是将其放入RAM可能不是正确的解决方法。
仅有8GB的数据库,如果你已经优化了所有SQL活动,并且准备通过硬件来解决查询问题,我建议你会遇到麻烦。从长期来看,这不是可扩展的解决方案。您确定在软件和数据库设计方面没有任何措施可以产生实质性的差异吗?
一个解决方案是使用富士通版本的PostGreSQL,它支持内存列存储索引... https://www.postgresql.fastware.com/in-memory-columnar-index-brochure
但是它的成本很高...
或者运行带有内存表功能的MS SQL Server...即使是免费版本Express也有!