Oracle全球临时表/ PHP交互问题


0

我从来没有使用全球临时表,但我有一些问题,他们将如何在PHP环境中工作。

数据共享如何:假设通过php使用oci8持久连接到oracle。数据是否与数据库ID绑定?它是基于Apache httpd恶魔完成的吗?或者每个独立请求都是独特的?

何时从全局临时表中清除会话的数据?我假设(或者希望)它在php脚本退出时完成了。或者,如果没有,我假设我需要在脚本退出前将其删除。

3

全局临时表只是表结构(名称,列名,列数据类型等)的逻辑定义。当会话通过插入数据来引用它时,会在临时表空间中创建一个数据段以仅保存该会话的数据。因此,不同的会话可以引用相同的逻辑表定义,因为它们各自具有自己的专用数据段,可以在提交时或会话断开时轻松清除,而不会影响其他会话。

GTT中的数据清除可以在提交时或会话结束时进行,具体取决于创建它的选项。无论哪种情况,在断开连接之前,您都不必亲自清理自己。

GTT的一个有用的替代方法是子查询分解子句(“WITH”),您可以在其中创建多个可以引用之前在该SQL语句中声明的关系的关系。这些可以物化为临时表空间中的一个数据段,当它们超过特定的内存使用量时由Oracle自动执行,或通过使用MATERIALIZE优化器提示手动执行。


1

如果我没有记错,全局临时表中的数据只能从一个活动会话中获得,并且只能用于该活动会话(我的意思是session = connection)。因此,您只能看到活动会话中之前插入的数据。因此,我相信,这些数据在闭幕会议后被清除。不管你使用哪种语言。

至少我是这么认为的。 :d

正如在这里写: http://www.oracle-base.com/articles/8i/TemporaryTables.php

的数据在全局临时表是私有的,这样由会话插入的数据只能由会话访问。

临时表中的数据在数据库会话结束时自动删除,即使它异常结束。

对不起,我的英语不好。