PostgreSQL在内存数据库中

Dav*_*nes 21 memory postgresql freebsd

我想从内存运行我的PostgreSQL数据库服务器.原因是在我的新服务器上,我有24 GB的内存,几乎没有使用它.

我知道我可以运行这个命令来制作一个ramdisk:

mdmfs -s 1024m md2 /mnt
Run Code Online (Sandbox Code Playgroud)

理论上我可以将PostgreSQL存储在那里.但问题是,如果服务器崩溃或重新启动,数据将会消失.

基本上,我希望数据库始终在内存中加载,这样它就不必去硬盘驱动器读取每条记录,因为我有大量的内存,因为内存比硬盘驱动器快.

是否有办法在PostgreSQL写入磁盘的同时执行此操作,以便在服务器出现故障时不丢失任何数据?或者有没有办法缓存内存中的所有数据?

小智 11

我现在正在使用异步的流复制.这意味着我的MASTER可以在内存中运行,使用传统磁盘的单独SLAVE实例.

机器重启将涉及停止SLAVE,将postgresql数据复制回ramdisk,然后重新启动MASTER,然后重启SLAVE.这将是一个有趣的可能性,与REDIS相似,但具有冗余/ hotstandby/backup/sql/rich工具集等优点.

  • 现在使用同步复制可能更加可行.做OP想要的. (2认同)

jus*_*ody 6

你看过服务器配置手册章了吗?检查一下,然后谷歌postgresql memory tuning.


Rob*_*vey 3

我必须相信 Postgres 的编写方式可以充分利用服务器中的可用 RAM。正如您现在可能已经猜到的,在 Postgres 之外没有可靠的方法可以做到这一点。

在 Postgres 中,事务确保所有操作都是原子的,因此如果在写入 Postgres 数据库时断电,您只会丢失该特定操作,而不是整个数据库。

  • 感谢您的建设性意见。我刚刚发现这个问题,并认为在给定答案中添加一些细节不会伤害任何人。 (4认同)
  • 我认为问题所问的问题与关闭后 ramdisk 的持久性有关,而不是与 Postgres 中事务的原子性质有关。 (3认同)