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

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

【问题讨论】:

  • 顺便说一句,它适用于我使用 Python 和 django 框架的网站。

标签: performance postgresql ram


【解决方案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,我很确定它们是您的语言中类似的字典映射数据结构。

    希望这会有所帮助!

    【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        不过,请务必做好备份。

        【讨论】:

        • 他不会在服务器重启时丢失他们的数据吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-24
        • 1970-01-01
        • 2018-12-24
        • 2017-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多