全局临时表并发

Fey*_*yaz 3 oracle concurrency

我有一个全局临时表,在提交时设置为删除.它在并发问题上的表现如何?我的意思是如果另一个会话想要使用该全局临时表会发生什么?答案可能不是"他们共享相同的数据".

现在,如果我的猜测是正确的:),表是否锁定直到第一个连接提交,或者dbms是否为每个连接创建一个全局临时表?(像表的一个实例?)

Vin*_*rat 9

文档:

临时表中的数据仅对将数据插入表中的会话可见.

每个会话都将具有临时表的逻辑独立副本.

由于您无法查看其他会话的数据,并且由于Oracle在行级别处理锁定,因此您不能被其他会话的DML阻止.并发DML(插入,删除,更新)不会影响其他会话.

只有DDL需要锁定表(即:ALTER TABLE ...)

  • @michael:每个线程都有自己的会话(或者它们不能并行运行),因此它们不会看到彼此的临时数据.仅临时表不允许您在没有重叠的情况下锁定行,您将需要其他功能.请参阅[您的问题](http://stackoverflow.com/q/5907003/119634). (2认同)