2009-01-02 57 views
17

如何将我的整个PostgreSql数据库加载到RAM中以获得更快的访问?我有8GB内存,我想为数据库专用2GB。我已阅读有关共享缓冲区设置,但它只是缓存数据库中访问最多的片段。我需要一个解决方案,将整个DB放入RAM中,任何读取都将从RAM DB发生,并且任何写入操作都会首先写入RAM DB,然后写入硬盘驱动器的DB(有些事情就像默认的fsync =在postgresql配置设置中使用共享缓冲区)。需要将整个postgreSQL数据库加载到内存中

+0

顺便说一句,它是为我使用Python和Django框架的网站。 – Bharath 2009-01-02 15:34:16

回答

4

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

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

但是,即使采用这种方法,我也不确定是否可以将索引放入RAM中;我不认为MySQL迫使HASH索引与其IN MEMORY表无关...

我也想做类似的事情来提高性能,因为我也在处理大量数据集。我正在使用python;他们有字典数据类型,基本上是{key:value}对的哈希表。使用这些是非常有效的。基本上,为了让我的PostgreSQL表进入RAM,我把它加载到这样一个Python字典中,使用它,并且在一段时间内将它保存到数据库中;如果使用得当,它的价值就在于它。

如果你不使用python,我很肯定他们是你的语言中的一个类似的字典映射数据结构。

希望这会有所帮助!

+0

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

0

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

0

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

尽管如此,确保你备份好。

+5

不会在服务器重新启动时丢失数据吗? – SDReyes 2012-06-04 19:37:38

相关问题