我想从内存运行我的PostgreSQL数据库服务器。原因是在我的新服务器上,我有24 GB的内存,几乎没有使用它。
我知道我可以运行此命令来制作ramdisk:
mdmfs -s 1024m md2 /mnt
理论上我可以将PostgreSQL存储在那里。但问题是,如果服务器崩溃或重新启动,数据将会消失。
基本上,我希望数据库始终在内存中加载,这样就不必去硬盘驱动器读取每条记录,因为我有大量的内存,因为内存比硬盘驱动器快。
有没有办法在将PostgreSQL写入磁盘时执行此操作,以便在服务器出现故障时不丢失任何数据?或者有没有办法将所有数据缓存在内存中?
答案 0 :(得分:10)
我现在正在使用异步的流式复制。这意味着我的MASTER可以在内存中运行,使用传统磁盘的单独SLAVE实例。
重新启动计算机将涉及停止SLAVE,将postgresql数据复制回ramdisk,然后重新启动MASTER,然后重启SLAVE。这将是一个有趣的可能性,与REDIS相似,但具有冗余/ hotstandby / backup / sql / rich工具集等优势。
答案 1 :(得分:6)
postgresql memory tuning
。
答案 2 :(得分:3)
我必须相信Postgres的编写方式是充分利用服务器中的可用RAM。正如你可能已经猜到的那样,在Postgres之外没有可靠的方法来做到这一点。
在Postgres中,事务确保所有操作都是原子操作,因此如果在写入Postgres数据库时电源关闭,则只会丢失该特定操作,而不会丢失整个数据库。
答案 3 :(得分:1)
答案是缓存。考虑向服务器添加内存,然后调整PostgreSQL以最大化内存使用。此外,文件系统缓存将有助于此,自动执行其中一些操作。您将能够加速性能,几乎就像它在内存中除了第一次打击一样,而不必自己管理它,并且能够拥有比物理内存更大的数据库。