搜索
您的当前位置:首页正文

oracle临时表作用

来源:星星旅游
4.8 临时表的使用

4.8.1临时表主要的使用场景

 对于一个电子商务类网站,不同消费者在网站上购物,就是一个独立的 SESSION,选购商品放进购物车中,最后将购物车中的商品进行结算。也就是说,必须在整个SESSION期间保存购物车中的信息。同时,还存在有些消 费者,往往最终结账时放弃购买商品。如果,直接将消费者选购信息存放在最终表(PERMANENT)中,必然对最终表造成非常大的压力。

因此,对于这种案例,就可以采用创建临时表( ON COMMIT PRESERVE ROWS )的方法来解决。数据只在 SESSION 期间有效,对于结算成功的有效数据,转移到最终表中后,ORACLE自动TRUNCATE 临时数据;对于放弃结算的数据,ORACLE 同样自动进行 TRUNCATE ,而无须编码控制,并且最终表只处理有效订单,减轻了频繁的DML的压力。

 临时表的另一个应用,就是存放数据分析的中间数据。

4.8.2临时表的特点

 多用户操作的独立性:对于使用同一张临时表的不同用户,ORACLE都会分配一个独立的 Temp Segment,这样就避免了多个用户在对同一张临时表操作时发生交叉,从而保证了

多个用户操作的并发性和独立性;

 数据的临时性:既然是临时表,顾名思义,存放在该表中的数据是临时性的。ORACLE根据你创建临时表时指定的参数(On Commit Delete Rows / On Commit Preserve Rows),自动将数据TRUNCATE掉。

4.8.3临时表数据的时效性

 On Commit Delete Rows: 数据在 Transaction 期间有效,一旦COMMIT后,数据就被自动 TRUNCATE 掉了; SQL> CREATE GLOBAL TEMPORARY TABLE QCUI_Temp_Trans 2 ON COMMIT DELETE ROWS 3 AS 4 SELECT * FROM t_Department; 表已创建。 SQL> INSERT INTO QCUI_Temp_Trans 2 SELECT * FROM t_Dept; 已创建4行。 SQL> SELECT * FROM QCUI_Temp_Trans; DEPTID DEPTNAME ---------- -------------------- 101 销售部 201 财务部 301 货运部 401 采购部 SQL> commit; 提交完成。 SQL> SELECT * FROM QCUI_Temp_Trans; 未选定行  On Commit Preserve Rows :数据在 Session 期间有效,一旦关闭了Session 或 Log Off 后,数据就被 ORACLE 自动 Truncate 掉。

SQL> CREATE GLOBAL TEMPORARY TABLE QCUI_Temp_Sess 2 ON COMMIT PRESERVE ROWS 3 AS 4 SELECT * FROM t_Department; 表已创建。 SQL> Select * from QCUI_Temp_Sess; DEPTID DEPTNAME ---------- -------------------- 101 销售部 301 货运部 401 采购部 201 财务部 SQL> exit C:\\Documents and Settings\\admin>sqlplus user@passwd SQL> SELECT * FROM QCUI_Temp_Sess; 未选定行

因篇幅问题不能全部显示,请点此查看更多更全内容

Top