我曾经问过性能问题,人们会告诉我 PostgreSQL 自动将足够小的表完全保存在 RAM 中,以免给 HDD 带来压力,从而实现“小表”的超快读写,即很少更容易适合可用 RAM(或分配给 PG 的内容)的行。
这对我来说很有意义,让我很高兴,因为我可以在并行运行的脚本之间有效地进行通信,而不会给我可怜的 HDD/SSD 带来压力并堵塞所有资源。
但后来我突然想到:这怎么可能?PG 怎么可能将一个表全部保存在 RAM 中,无论它有多小,而不会丢失数据完整性?
如果它不是一直写入永久存储,如果突然断电,或者软件崩溃,或者在运行时发生其他一些灾难,它怎么可能恢复?我想得越多,这对我来说就越不重要。
我能想到的唯一答案是:不,它实际上并没有这样做。如果 PG 从不(或很少)将数据写入永久存储,我看不到任何可能的方式来避免丢失数据。
如果这是可能的,但只有在为表格或设置启用某种标志后,我才想知道该标志/设置。我想为仅包含“内部通信”数据的表启用此功能,该数据类型除了作为主动运行脚本的“公共数据存储”之外没有任何价值。