GP中的临时表

create global temporary table tkr_audi_samp_m_temp
(
  deal_date    numeric(8),
  prov_id      character varying(5),
  element_id   numeric(10),
  strategy_id  numeric(10),
  cnt          numeric(10),
  statis_month numeric(6)
)
on commit preserve rows
DISTRIBUTED RANDOMLY


--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
--ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。
注:这里要说明的是,ORACLE Truncate 掉的数据仅仅是分配给不同 Session 或 Transaction的
 Temp Segment 上的数据,而不是将整张表数据 TRUNCATE 掉。 


可以对临时表创建索引,视图,触发器,可以用export和import工具导入导出表的定义,但是不能导出数据。
表的定义对所有的会话可见。


其实 Temp Table 还是可以有比较广泛的应用的,Temp Table 的特点 
(1) 多用户操作的独立性:对于使用同一张临时表的不同用户,ORACLE都会分配一个独立的 Temp Segment,
这样就避免了多个用户在对同一张临时表操作时发生交叉,从而保证了多个用户操作的并发性和独立性; 
(2) 数据的临时性:既然是临时表,顾名思义,存放在该表中的数据是临时性的。ORACLE根据你创建临时表时
指定的参数(On Commit Delete Rows / On Commit Preserve Rows),自动将数据TRUNCATE掉。 


Temp Table 并非存放在用户的表空间中,而是存放在 Schema 所指定的临时表空间中。 尽管对临时表的DML操作

速度比较快,但同样也是要产生 Redo Log 的,只是同样的DML语句,比对 PERMANENT 的DML 产生的Redo Log 少。






评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值