据我所知temp_buffers
,设置服务用于存储临时表数据。
但是当我创建了一个临时表时,会立即在内部为它创建文件PGDATA
以及主数据库。因此,我将感谢您对几个问题的帮助。
会发生什么
。临时表数据是否temp_buffers
足以存储临时表数据?湾。临时表数据是否
temp_buffers
不足以存储临时表数据?是否有任何情况下没有足够的
temp_buffers
设置最终溢出pgsql_tmp
?
据我所知temp_buffers
,设置服务用于存储临时表数据。
但是当我创建了一个临时表时,会立即在内部为它创建文件PGDATA
以及主数据库。因此,我将感谢您对几个问题的帮助。
会发生什么
。临时表数据是否temp_buffers
足以存储临时表数据?
湾。临时表数据是否temp_buffers
不足以存储临时表数据?
是否有任何情况下没有足够的temp_buffers
设置最终溢出pgsql_tmp
?
在每个.
pg_class
_pg_attributes
_ 我无法在 postgresql 源代码中提到此行为清晰可见的地方。文件创建远非. 可以从这里开始阅读pg_catalog
create temp table
create temp table
写入这些临时表的数据将存储在
temp_buffers
后端私有内存中的特殊内存结构中。像 一样工作shared_buffers
,但简单得多,因为我们不关心崩溃后此类临时数据的并发访问和恢复。如果
temp_buffers
数据不够用 -temp_buffers
区域内的旧页面将被逐出并写入相应的关系文件。没有永不。显式临时表存储在常规数据库目录
t<backendOID>_
中,文件名中带有可见前缀(如$PGDATA/base/13709/t3_226351
)。请不要在 postgresql 中频繁创建或删除临时表(每秒数十次)。这会导致系统目录膨胀,从而减慢任何查询。postgresql 中的临时表不是“免费的”。