首页 > 解决方案 > postgres 是否支持内存临时表

问题描述

我知道 postgres 不允许内存结构。但是为了使临时表有效地工作,具有内存结构很重要,否则它必须流到磁盘并且不会那么有效。所以我的问题是postgres是否允许临时表的内存存储?我的预感是它没有。只是想和某人确认一下。

提前致谢!

标签: postgresql

解决方案


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

从手册中引用:

设置每个数据库会话使用的最大临时缓冲区数。这些是会话本地缓冲区,仅用于访问临时表。默认值为八兆字节 (8MB)。该设置可以在单个会话中更改,但只能在会话中第一次使用临时表之前进行;随后尝试更改该值将对该会话没有影响。

会话将根据需要分配临时缓冲区,直到 temp_buffers 给出的限制。在实际上不需要很多临时缓冲区的会话中设置一个大值的成本只是一个缓冲区描述符,或者大约 64 字节,每个 temp_buffers 增量。但是,如果实际使用了缓冲区,则将为其消耗额外的 8192 字节(或通常为 BLCKSZ 字节)。

所以如果你真的需要,你可以增加temp_buffers.


推荐阅读