PostgreSQL 有相当于 MySQL 的内存表吗?
这些 MySQL 内存表可以跨会话持续存在(即,不同于在会话结束时丢弃的临时表)。我找不到任何可以用 PostgreSQL 做同样事情的东西。
PostgreSQL 有相当于 MySQL 的内存表吗?
这些 MySQL 内存表可以跨会话持续存在(即,不同于在会话结束时丢弃的临时表)。我找不到任何可以用 PostgreSQL 做同样事情的东西。
不,目前它们在 PostgreSQL 中不存在。如果你真的需要一个内存表,你可以创建一个 RAM 磁盘,为它添加一个表空间,然后在上面创建表。
如果您只需要在不同会话之间可见的临时表,则可以使用UNLOGGEDtable。这些不是真正的内存表,但当表数据明显小于系统 RAM 时,它们的行为会惊人地相似。
全局临时表是另一种选择,但在 PostgreSQL 9.2 中不支持(见注释)。
回答一个四年前的问题,但因为它现在仍然在谷歌搜索结果的顶部。
没有在内存中缓存完整表的内置方法,但是有一个扩展可以做到这一点。
In Memory Column Store是一个库,它充当扩展插件以及列式存储和执行引擎。您可以在此处参考文档。有一个加载函数可用于将整个表加载到内存中。
优点是表存储在 postgres shared_buffers 中,因此当执行查询时,postgres 会立即感知到页面在内存中并从那里获取。
缺点是 shared_buffers 并没有真正设计为以这种方式运行,并且可能会发生不稳定(通常不会发生),但是为了安全起见,您可能可以在具有此配置的辅助集群/机器中使用它。
关于 postgres 和 shared_buffers 的所有其他常见警告仍然适用。