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

Posted

技术标签:

【中文标题】需要将整个 postgreSQL 数据库加载到 RAM 中【英文标题】:Need to load the whole postgreSQL database into the RAM 【发布时间】:2010-09-29 06:02:18 【问题描述】:

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

【问题讨论】:

顺便说一句,它适用于我使用 Python 和 django 框架的网站。 【参考方案1】:

如果您使用的是 Java,可能类似于 Tangosol Coherence cache。

【讨论】:

【参考方案2】:

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

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

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

我也想做类似的事情来提高性能,因为我也在处理庞大的数据集。我正在使用python;他们有字典数据类型,基本上是 key: value 对形式的哈希表。使用这些是非常有效和有效的。基本上,为了将我的 PostgreSQL 表放入 RAM,我将其加载到这样的 python 字典中,使用它,并偶尔将其持久化到 db 中;如果用得好,还是值得的。

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

希望这会有所帮助!

【讨论】:

该链接不再提供该文章。 Archive.org 有:web.archive.org/web/20080517112936/http://…【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

不过,请务必做好备份。

【讨论】:

他不会在服务器重启时丢失他们的数据吗?

以上是关于需要将整个 postgreSQL 数据库加载到 RAM 中的主要内容,如果未能解决你的问题,请参考以下文章

将文件从 PostgreSQL 导入到 R

我可以将整个 HTML 文档加载到 Internet Explorer 中的文档片段中吗?

将数据从 SQL Server/PostgreSQL 移动到 MySQL

将 CSV 文件中的内容加载到 PostgreSQL 表中

加载数据转储时,将 Django 项目从 sqlite3 后端切换到 postgresql 失败

如何在不先定义表中的列的情况下将数据加载到 PostgreSQL 中?