需要将整个PostgreSQL数据库加载到RAM中

26

如何将整个PostgreSql数据库放入RAM以便更快地访问?我有8GB内存,想为数据库分配2GB。我已经了解了共享缓冲区设置,但它只缓存最常访问的数据库片段。我需要一个解决方案,可以将整个数据库放入RAM,任何读取操作都将从RAM数据库中进行,任何写入操作都将首先写入RAM数据库,然后再写入硬盘上的数据库(类似于postgresql配置设置中默认的fsync=on和共享缓冲区)。


顺便说一下,这是为我的网站使用Python和Django框架。 - Bharath
有人对这个问题有2022年的答案吗?由于RAM价格大幅下降,所以实际上是可行的。主要是因为我不想使用pgsql和redis。 - wanna_coder101
7个回答

9
我曾经有一段时间也问过自己同样的问题。PostgreSQL 的缺点之一是似乎不支持像 MySQL 那样的内存存储引擎... 无论如何,几周前我遇到了一篇关于如何做到这一点的文章,尽管它似乎只适用于Linux。我真的不能为它背书,因为我自己没有尝试过,但由于 PostgreSQL 表空间确实被分配了一个挂载存储库,所以它似乎是有道理的。然而,即使采用这种方法,我也不确定你是否可以将索引放入 RAM 中; 我认为 MySQL 强制使用哈希索引在其内存表中并非毫无意义... 我也想做类似的事情来提高性能,因为我也在处理庞大的数据集。我使用 python;他们有字典数据类型,基本上是形式为 {key: value} 对的哈希表。使用这些非常高效和有效。基本上,为了将我的 PostgreSQL 表加载到 RAM 中,我将它加载到这样的 python 字典中,进行操作,并偶尔将其持久化到数据库中;如果使用得当,这是值得的。
如果您没有使用Python,我相信您的语言中有类似的字典映射数据结构。
希望这可以帮到您!

该文章在该链接上已不再可用。Archive.org有它:https://web.archive.org/web/20080517112936/http://www.redhatmagazine.com/2007/12/12/tip-from-an-rhce-memory-storage-on-postgresql/ - Otheus

2

1

建立一个老式的RAM磁盘,并告诉pg将其数据存储在那里。

但一定要确保备份得好。


9
他在服务器重启时难道不会丢失他们的数据吗? - SDReyes

0

我自己还没有尝试过,但是:

理论上,可以将两者结合起来。

如果您这样做,您可能还想调整seq_page_cost和random_page_cost以反映相对存储成本。请参见https://www.postgresql.org/docs/current/runtime-config-query.html

查询优化和增加shared_buffers的预先存在的建议仍然适用。如果您在这么小的数据库上遇到这些问题,那么只是将其放入RAM可能不是正确的解决方法。


0

0

仅有8GB的数据库,如果你已经优化了所有SQL活动,并且准备通过硬件来解决查询问题,我建议你会遇到麻烦。从长期来看,这不是可扩展的解决方案。您确定在软件和数据库设计方面没有任何措施可以产生实质性的差异吗?


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接