2009-01-02 133 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

相關問題