【发布时间】:2017-10-18 20:35:03
【问题描述】:
ON COMMIT DROP:临时表将在当前事务块结束时被删除。
但是,临时表是唯一的每个会话,而不是每个线程:see here
我的问题:
如果一个临时表被标记为 WITH ON COMMIT DROP,那么 PG 将如何处理多个线程访问该表的事实,即任何线程都可以提交,但由于其他线程正在使用该表而无法删除该表。
编辑: AFAIK,多个事务可以在一个会话中运行。如果是这种情况,多个事务可以访问具有临时表的函数,因此我的问题。
【问题讨论】:
-
线程是否共享相同的连接/会话?
-
这有点超出我的范围,但从我读到的内容来看,如果使用连接池,那么多个“线程”将共享同一个连接并且可能是会话。
-
不要通过加入连接池来使事情复杂化。 (或:改写问题)
-
AFAIK,一个会话可以运行多个事务。将池放在一边。
-
也有可能我误解了我阅读的链接中的数据,而“线程”只是指从事务中的任何点进行的函数调用。如果是这样,我的问题得到了回答。
标签: multithreading postgresql concurrency transactions postgresql-10