Database Postgresql:我可以覆盖临时表的默认行为吗?

Database Postgresql:我可以覆盖临时表的默认行为吗?,database,postgresql,oncreate,temp-tables,Database,Postgresql,Oncreate,Temp Tables,在我的数据库中,我有各种临时表,我不想在每个事务之后删除这些表,这是临时表的默认行为 为了减少这种丢弃开销,我编写了以下临时表的定义 CREATE TEMPORARY TABLE TEMPTABLEINPOSTGRESDB (LIKE PERMTABLE INCLUDING INDEXES) ON COMMIT DELETE; 你能告诉我这种桌子的性能吗?DB是否每次都会清除表而不是将其丢弃 是否有其他解决方案来实现下面提到的功能 应用程序在每个会话中添加少量记录,并且一旦会话完成,应用程序必

在我的数据库中,我有各种临时表,我不想在每个事务之后删除这些表,这是临时表的默认行为

为了减少这种丢弃开销,我编写了以下临时表的定义

CREATE TEMPORARY TABLE TEMPTABLEINPOSTGRESDB (LIKE PERMTABLE INCLUDING INDEXES) ON COMMIT DELETE;
你能告诉我这种桌子的性能吗?DB是否每次都会清除表而不是将其丢弃

是否有其他解决方案来实现下面提到的功能

应用程序在每个会话中添加少量记录,并且一旦会话完成,应用程序必须删除数据。在会话中间添加的数据,对于应用程序的任何其他线程都不可见。


编辑:读取会话而不是事务

默认行为是在会话结束时删除临时表,而不是事务。您不需要做任何事情来将其保留在交易结束时。只是不要在提交时使用

CREATE TEMPORARY TABLE TEMPTABLEINPOSTGRESDB (LIKE PERMTABLE INCLUDING INDEXES)
或者在提交保留行上使用默认的

如果在提交删除时使用
该表将被截断,并且不会在事务结束时删除,但仍会在会话结束时删除

如果需要在会话之间保留该表,则需要一个永久表。如果数据特定于某个会话,请使用会话id。或者在每个会话中创建并删除临时表


我的问题是保留整个会话的数据,并在会话结束时截断数据。我不想删除表以减少创建和删除每个会话的开销。那么,您能告诉我创建和删除临时表对性能有什么影响吗?