临时表

原创 2013年12月02日 17:59:45

临时表是会话/事务中的中间集合,它保存的数据只对本次会话/事务可见。即使提交其他会话都无法查看。

不存在多用户并发问题,不存在一个会话阻塞另一个会话问题,即使锁住也不会有影响其他会话使用。

临时表增删改不会产生redo,但是它会产生undo,undo会产生redo日志,所以他不会直接产生日志,会间接产生redo。delete和update产生的undo比较多。

临时表空间分配:临时表会在当前用户默认临时表空间中分配存储空间或者可能使用一个过程定义者的临时表空间(如果从一个定义权限权限过程访问临时表)。全局临时表就是一个模板,创建时不需要指定任何存储空间和段属性。临时表相关的属性直接存储在数据字典中,临时表定义是静态定义。

创建会话级别临时表

create global temporary table temp_t
on commit preserve rows
as
select * from all_objects where 1=0;

创建事务级别临时表
create global temporary table temp_t1
on commit delete rows
 as
select * from all_objects where 1=0;


代码中动态创建临时表出现问题:

1、DDL代价非常大,包括大量递归SQL语句,DDL涉及到大量串行化

2、动态创建会失去静态SQL优势。

3、同时执行存储过程两个副本,导致两个存储过程中删除和新增冲突

4、会导致表无法删除:因为断电等原因导致,需要手动删除。


临时表支持:触发器、检查约束、索引

不支持:引用约束、不能表嵌套、IOT、

临时表使用优化器是RBO规则优化器

可以精心设计让临时表使用CBO优化器,通过DBMS_stats、dynamic_sampling(tablename 2)

select /* +first_rows  dynamic_sampling( t 2)*/  t.* from temp_t1  t; 




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

orcl临时表

  • 2014-11-13 00:05
  • 484B
  • 下载

Oracle 临时表用法汇总

  • 2015-01-09 09:57
  • 71KB
  • 下载

ORACLE的临时表

ORACLE的临时表在应用系统中有很大的作用,它可以让用户只能够操作各自的数据中而互不干扰,不用担心会破坏或影响其他SESSION/TRANSACTION的数据,这也是数据安全的一种解决方法。  临...

Oracle中的临时表讲解

  • 2008-07-07 20:44
  • 44KB
  • 下载

oracle 数据库中的临时表

目前所有使用Oracle作为数据库支撑平台的应用,大部分数据量比较庞大的系统,即表的数据量一般情况下都 是在百万级以上的数据量。当然在Oracle中创建分区是一种不错的选择,但是当你发现你的应用...

Oracel储存过程用临时表

  • 2010-10-21 21:48
  • 27KB
  • 下载

sql临时表相关介绍

  • 2013-05-21 11:12
  • 16KB
  • 下载

mysql临时表

1、 在我们的项目中,往往可能会有这么一个需求:比如老师给学生选课,前台页面老师勾选了n个学生,给他们选语文课,这时有的学生已经选过语文课了,我们向后台传递这些学生的信息和语文课信息。一般初学者,会在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)