Ell*_* B. 33 mysql postgresql temp-tables
PostgreSQL有相同的MySQL 内存表吗?
这些MySQL内存表可以跨会话持久化(即,与会话结束时丢弃的临时表不同).我无法找到任何可以做同样事情的PostgreSQL.
ale*_*oot 38
不,目前它们在PostgreSQL中不存在.如果你真的需要一个内存表,你可以创建一个RAM磁盘,为它添加一个表空间,并在其上创建表.
如果您只需要在不同会话之间可见的临时表,则可以使用UNLOGGED表.这些不是真正的内存表,但当表数据明显小于系统RAM时,它们的行为会出乎意料地类似.
全局临时表将是另一种选择,但在9.2版本的PostgreSQL中不受支持(参见注释).
Mad*_*nan 13
回答了一个四年前的问题,但是现在它仍然是Google搜索结果的最高点.
没有内置的方法来在内存中缓存完整的表,但有一个扩展可以做到这一点.
在内存列存储是一个库,它作为一个扩展插件,也作为一个柱状存储和执行引擎.你可以在这里参考文档.有一个加载函数,你可以用来将整个表加载到内存中.
优点是表存储在postgres shared_buffers中,因此在执行查询时,postgres立即感知页面在内存中并从那里获取.
缺点是shared_buffers实际上并不是设计为以这种方式运行并且可能发生不稳定(通常不会发生),但是你可以在具有这种配置的辅助集群/机器中使用它来保证安全.
关于postgres和shared_buffers的所有其他常见警告仍然适用.