PostgreSQL中的内存表

PHP*_*Pst 14 database postgresql in-memory

如何在PostgreSQL中创建内存表?

And*_*rus 16

使用适合您的操作系统的软件创建RAM磁盘.使用CREATE TABLESPACE创建 RAM磁盘上的数据库集群.当你创建你的表,请使用TABLESPACE条款.显然,除非保存RAM磁盘,否则RAM表不会在系统重新启动时保持不变.


Pab*_*ruz 9

嗯,从技术上讲,它不是内存表,但是,您可以创建一个全局临时表:

create global temporary table foo (a char(1));
Run Code Online (Sandbox Code Playgroud)

它不能保证它会一直保留在内存中,但它可能会(除非是一个巨大的表).

您还可以考虑PostgreSQL 9.1的未记录表,它将以不能成为事务的一部分为代价提供更好的性能(它们的写操作不在WAL中维护).

  • 除了"全局"只是PostgreSQL中的噪音.可能与其他RDBMS兼容.我[引用手册](http://www.postgresql.org/docs/9.1/interactive/sql-createtable.html#SQL-CREATETABLE-COMPATIBILITY):`可选地,可以在TEMPORARY或TEMP之前写入GLOBAL或LOCAL.这在PostgreSQL中没什么区别,......` (13认同)

yzo*_*org 5

您还可以考虑 PostgreSQL 9.1 的无日志表,这将为您提供更好的性能,但代价是无法成为事务的一部分(它们的写入操作不在 WAL 中维护)。

来自@PabloSantaCruz

示例来自https://www.compose.com/articles/faster-performance-with-unlogged-tables-in-postgresql/

CREATE UNLOGGED TABLE "EUR/USD_ticks"  
(
  dt timestamp without time zone NOT NULL,
  bid numeric NOT NULL,
  ask numeric NOT NULL,
  bid_vol numeric,
  ask_vol numeric,
  CONSTRAINT "EUR/USD_ticks_pkey" PRIMARY KEY (dt)
)
Run Code Online (Sandbox Code Playgroud)

我计划尝试一下,并认为它值得用户对此选项进行投票(即“长尾”)自己的答案。