如何将整个PostgreSql数据库放入RAM以便更快地访问?我有8GB内存,我想为数据库专用2 GB。我已经阅读了有关共享缓冲区设置的信息,但它只是缓存了数据库中访问最多的片段。我需要一个解决方案,将整个数据库放入RAM中,任何读操作都会从RAM DB中进行,任何写操作都会首先写入RAM DB,然后写入硬盘驱动器上的DB。(有些像默认的fsync =在postgresql配置设置中使用共享缓冲区。)

有帮助吗?

解决方案

我已经问了一段时间同样的问题。 PostgreSQL的一个缺点是它似乎不像MySQL那样支持IN MEMORY存储引擎......

无论如何,我跑到文章几周前描述了如何做到这一点;虽然它似乎只适用于Linux。我真的不能保证它,因为我自己没有尝试过,但它似乎有意义,因为PostgreSQL表空间确实被分配了一个已安装的存储库。

然而,即使采用这种方法,我也不确定你是否也可以将索引放入RAM中;我不认为MySQL强制HASH索引与IN MEMORY表一起使用......

我也想做类似的事情以提高性能,我也在使用庞大的数据集。我正在使用python;它们具有字典数据类型,它们基本上是{key:value}对形式的哈希表。使用它们非常有效和有效。基本上,为了将我的PostgreSQL表放入RAM中,我将其加载到这样的python字典中,使用它,并偶尔将其保存到db中;如果使用得当,它是值得的。

如果您不使用python,我很确定它们是您所用语言的类似字典映射数据结构。

希望这有帮助!

其他提示

如果您按ID提取数据,请使用memcached - http://www.danga.com/memcached / + postgresql。

如果你使用Java,也许就像 Tangosol Coherence缓存

只有一个8GB的数据库,如果你已经优化了所有SQL活动并且你已经准备好解决硬件的查询问题,我建议你遇到麻烦。从长远来看,这不是一个可扩展的解决方案。您确定无法在软件和数据库设计方面做出实质性的差异吗?

设置一个老式的RAMdisk并告诉pg将数据存储在那里。

请确保你支持它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top