如何将整个PostgreSql数据库放入RAM以便更快地访问?我有8GB内存,我想为数据库专用2 GB。我已经阅读了有关共享缓冲区设置的信息,但它只是缓存了数据库中访问最多的片段。我需要一个解决方案,将整个数据库放入RAM中,任何读操作都会从RAM DB中进行,任何写操作都会首先写入RAM DB,然后写入硬盘驱动器上的DB。(有些像默认的fsync =在postgresql配置设置中使用共享缓冲区。)
答案 0 :(得分:7)
我已经问了一段时间同样的问题。 PostgreSQL的一个缺点是它似乎不像MySQL那样支持IN MEMORY存储引擎......
无论如何,我几周前跑到article,描述了如何做到这一点;虽然它似乎只适用于Linux。我真的不能保证它,因为我自己没有尝试过,但它似乎有意义,因为PostgreSQL表空间确实被分配了一个已安装的存储库。
然而,即使采用这种方法,我也不确定您是否也可以将索引放入RAM中;我不认为MySQL强制HASH索引与IN MEMORY表一起使用......
我也想做类似的事情以提高性能,我也在使用庞大的数据集。我正在使用python;它们具有字典数据类型,它们基本上是{key:value}对形式的哈希表。使用它们非常有效和有效。基本上,为了将我的PostgreSQL表放入RAM中,我将其加载到这样的python字典中,使用它,并偶尔将其保存到db中;如果使用得当,它是值得的。
如果您不使用python,我很确定它们是您所用语言的类似字典映射数据结构。
希望这有帮助!
答案 1 :(得分:2)
如果您按ID提取数据,请使用memcached - http://www.danga.com/memcached/ + postgresql。
答案 2 :(得分:0)
如果您使用的是Java,可能就像Tangosol Coherence cache一样。
答案 3 :(得分:0)
只有一个8GB的数据库,如果你已经优化了所有SQL活动并且你已经准备好解决硬件的查询问题,我建议你遇到麻烦。从长远来看,这不是一个可扩展的解决方案。您确定无法在软件和数据库设计方面做出实质性的差异吗?
答案 4 :(得分:0)
设置一个老式的RAMdisk并告诉pg将数据存储在那里。
请确保你支持它。