Postgres是否在内存临时表中支持

时间:2019-08-01 10:19:49

标签: postgresql

我知道postgres不允许在内存结构中使用。但是为了使临时表有效地工作,拥有内存结构很重要,否则它将不得不流到磁盘并且效率不高。所以我的问题是postgres是否允许临时表在内存中存储?我的直觉是,事实并非如此。只是想和某人确认。

谢谢!

1 个答案:

答案 0 :(得分:2)

是的,Postgres可以将临时表保留在内存中。可通过属性temp_buffers

配置的可用内存量

引用the manual

  

设置每个数据库会话使用的最大临时缓冲区数。这些是会话本地缓冲区,仅用于访问临时表。默认值为八兆字节(8MB)。可以在各个会话中更改设置,但只能在会话中首次使用临时表之前进行更改;随后尝试更改该值将对该会话无效。   
  
  会话将根据需要分配临时缓冲区,直到temp_buffers给定的限制。在实际上不需要很多临时缓冲区的会话中设置较大的值的代价只是temp_buffers中每个增量的缓冲区描述符,或大约64个字节。但是,如果实际使用缓冲区,则会为此消耗额外的8192字节(或者通常是BLCKSZ字节)。

因此,如果您确实需要,可以增加temp_buffers