21

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

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

mdmfs -s 1024m md2 /mnt

理论上我可以让 PostgreSQL 在那里存储它的数据。但是这样做的问题是,如果服务器崩溃或重新启动,数据就会消失。

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

有没有办法做到这一点,同时让 PostgreSQL 写入磁盘,这样我就不会丢失任何数据以防服务器出现故障?或者有没有办法将所有数据缓存在内存中?

4

4 回答 4

11

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

机器重新启动将涉及停止 SLAVE,将 postgresql 数据复制回 ramdisk,然后重新启动 MASTER,然后重新启动 SLAVE。这将是一个有趣的可能性,它与 REDIS 之类的东西相比很好,但具有冗余/热备/备份/sql/丰富的工具集等优势。

于 2011-06-30T23:47:09.377 回答
6

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

于 2009-12-02T10:59:12.147 回答
3

答案是缓存。考虑向服务器添加内存,然后调整 PostgreSQL 以最大限度地利用内存。此外,文件系统缓存将对此有所帮助,自动执行其中一些操作。您将能够提高性能,几乎就像除了第一次命中之外它在内存中一样,而不必自己管理它,并且能够拥有比物理内存更大的数据库。

于 2009-12-02T20:38:44.930 回答
3

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

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

于 2009-12-01T21:03:24.397 回答