我对内存表的理解是将在内存中创建的表,并且尽可能少地使用磁盘(如果有的话)。我假设我有足够的 RAM 来容纳该表,或者至少是大部分。我不想使用显式函数将表(如 pg_prewarm)加载到内存中,我只想在发出 aCREATE TABLE或时默认情况下表就在那里CREATE TABLE AS select statement,除非内存已满或除非我另有说明。我并不特别关心记录到磁盘。
7年前,有人在这里问过类似的问题PostgreSQL相当于MySQL内存表吗?。它已收到 2 个答复,其中一个有点晚了(4 年后)。
一个答案是创建一个 RAM 磁盘并为其添加一个表空间。或者使用 UNLOGGED 表。或者等待全局临时表。然而,我没有特殊的硬件,我只有普通的 RAM - 所以我不知道如何去做。我可以使用 UNLOGGED 功能,但据我了解,仍然涉及相当多的磁盘交互(这是我试图减少的),并且我不确定表是否会默认加载到内存中。此外,我不明白全局临时空间是如何相关的。我对它们的理解是它们只是可以共享的空间中的桌子。
另一个答案建议使用内存列存储引擎。然后使用函数将所有内容加载到内存中。我对这种方法的问题是,所提到的引擎看起来很旧并且没有维护,我找不到任何其他引擎。另外,我希望我不必明确地诉诸使用“加载到内存”功能,而是默认情况下一切都会发生。
我只是想知道 7 年后如何在 Postgres 12 中获取内存表。