java调试时如何看临时表数据_Java面试准备十八:数据库——临时表、视图

1. Oracle临时表临时表概念(1)临时表只在Oracle 8i以上产品中支持。(2)临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit的时候,临时表的数据自动清空。但是临时表的结构以及元数据还存储在用户的数据字典中。(3)ORACLE的临时表创建之后基本不占用表空间,临时表并非存放在用户的表空间中,而是存放在session所指定的临...
摘要由CSDN通过智能技术生成

1. Oracle临时表

临时表概念

(1)临时表只在Oracle 8i以上产品中支持。

(2)临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit的时候,临时表的数据自动清空。但是临时表的结构以及元数据还存储在用户的数据字典中。

(3)ORACLE的临时表创建之后基本不占用表空间,临时表并非存放在用户的表空间中,而是存放在session所指定的临时表空间中。如果你没有指定临时表(包括临时表的索引)存放的表空间的时候,你插入到临时表的数据是存放在ORACLE系统的临时表空间中(TEMP)。

(4)可以对临时表创建索引,视图,触发器。

(5)尽管对临时表的DML操作速度比较快,但同样也是要产生Redo Log,只是同样的DML,比对permanent产生的Redo Log要少 。

临时表不足之处

(1)不支持lob对象,这也许是设计者基于运行效率的考虑,但实际应用中确实需要此功能时也就无法使用临时表了。

(2)不支持主外键关系。

临时表特性和性能(与普通表和视图的比较)

(1)临时表只在当前连接/事务内有效

(2) 临时表不建立索引,所以如果数据量比较大或进行多次查询时,不推荐使用(临时表概念中的第4点不是说可以对临时表创建索引吗?)

(3)数据处理比较复杂的时候比较快,反之视图比较快

(4)在仅仅查询数据的时候建议用游标:open cursor for ‘sql clause’

临时表的应用

对于一个电子商务类网站,不同消费者在网站上购物,就是一个独立的 SESSION,选购商品放进购物车中,最后将购物车中的商品进行结算。也就是说,必须在整个SESSION期间保存购物车中的信息。同时,还存在有些消费者,往往最终结账时放弃购买商品。如果,直接将消费者选购信息存放在最终表(PERMANENT)中,必然对最终表造成非常大的压力。因此,对于这种案例,就可以采用创建临时表(ON COMMIT PRESERVE ROWS)的方法来解决。数据只在 SESSION 期间有效,对于结算成功的有效数据,转移到最终表中后,ORACLE自动TRUNCATE 临时数据;对于放弃结算的数据,ORACLE 同样自动进行 TRUNCATE ,而无须编码控制,并且最终表只处理有效订单,减轻了频繁的DML的压力。(不是很懂,现实中购物车的数据是永久保存的啊,并不是退出SESSION就被清空掉)

Temp Table 的另一个应用,就是存放数据分析的中间数据。

创建临时表

Oracle临时表,有两种类型:

(1)表只在当前会话中有效,如果你退出当前SESSION,临时表中的数据就被截断了(truncate table,即数据清空了)。

(2)如果你以一个SESSION登陆的时候是看不到另外一个SESSION中插入到临时表中的数据的。即两个不同的SESSION所插入的数据是互不相干的。

**注意:**ORACLE truncate 掉的数据仅仅是分配给不同的session 或transaction的temp segment上的数据,而不是将整张表数据truncate掉。当commit的时候则数据还在,当rollback的时候数据也是一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值