oracle临时表实际应用,oracle 临时表 应用场景

ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,但临时表的结构以及元数据还存储在用户的数据字典中。

1.会话级临时表

会话级临时表是指临时表中的数据只在会话生命周期之中存在,当会话结束的时候,Oracle自动清除临时表中数据。所以这里有一个常用的知识点,就是各自会话的数据只有自己才能看到,不同的会话看到的数据自己的(不同的数据),这个知识点在优化场景下利用很多。

格式:

Create Global Temporary Table Table_Name

(xxx int ) On Commit Preserve Rows;

2.事务级临时表

事务级临时表是指临时表中的数据只在事务生命周期中存在。

Create Global Temporary Table Table_Name

(xxx int )

On Commit Delete Rows;

当一个事务结束(commit or rollback),Oracle自动清除临时表中数据。同样的事务级临时表的数据在各会话之间也是独立的

业务优化最常见的情景如下:

1 用户在特定时间批量冲刷数据入库

2 数据库后台通过一个中转表(XXX)先对用户数据落地

3 依据各种逻辑,把XXX表的数据insert into 各种业务表

问题1:很多开发人员把XXX设计成普通表,而开发者理念又认为这其实只是一个中转临时表,索引的设计自然很多人也忽略了。

问题2 : 这个XXX通过多用户刷数据进来,涉及的数据量应该很大,如果设计成普通表,肯定适当地对一些处理过的数据要进行delete,这样明显又影响了业务效率。

利用临时表的特性就可大量提升此业务的性能问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值