23

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

4

5 回答 5

9

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

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

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

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

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

希望这可以帮助!

于 2009-01-04T06:29:24.353 回答
2

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

于 2009-01-14T15:07:58.240 回答
1

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

确保你备份它。

于 2009-06-02T22:33:04.067 回答
0

如果您使用的是 Java,也许类似于Tangosol Coherence 缓存。

于 2009-01-02T15:09:19.437 回答
0

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

于 2009-01-04T06:59:32.577 回答