有没有办法在 postgres 中访问其他会话的临时表?

new*_*der 21 postgresql pgadmin

我正在使用一个使用(本地)postgres 数据库并将一些信息存储在临时表中的 Windows 应用程序。我想看看临时表,但是 pgadmin 和 dbVis 告诉我:ERROR: cannot access temporary tables of other sessions在尝试查询数据时。我尝试更改架构和表的权限,但这似乎没有帮助,即使我使用与程序本身相同的用户访问数据库(至少在 dbVis 中)。是否有我可以在我的数据库中更改的设置,允许我对数据库中的所有会话进行“root”访问?

Cra*_*ger 17

无法访问其他会话中的临时表不是权限问题,而是设计的技术限制。一个 PostgreSQL 后端不能访问另一个后端的临时表,因为没有对临时表进行允许并发访问的常规内务处理。

在 9.2 中,您将需要使用UNLOGGED表格;这可以从其他会话中看到,但保留了临时表的大部分性能优势。


Jac*_*las 12

最简洁的答案是不”。其他会话中的临时表在设计上是不可见的。如果两个会话具有相同的用户,则没有区别。甚至:

autovacuum 守护进程无法访问,因此无法清理或分析临时表