ITPub博客

首页 > 数据库 > Oracle > Oracle临时表

Oracle临时表

原创 Oracle 作者:llnnmc 时间:2017-10-12 22:49:32 0 删除 编辑

临时表建立在全局上,所有会话都可以访问,但其中的行数据是被插入行的会话所持有的,开发人员可将它们做为私有存储区来操纵数据,不同用户只能操纵自己的行数据,谁都看不到其他人的行。

 

临时表的创建语法如下:

create global temporary table <temp_table_name>

(column datatype[, column datatype])

[on commit {delete | preserve} rows];

 

末尾的可选子句确定了插入行的生命周期。默认方式是在插入行的事务完成之时,删除相应的行。但也可以改变此行为,以便将行数据保留到插入行的会话结束为止。

 

临时表不支持主外键关系。临时表上也不会有DML锁,因为临时表数据是被会话私有的。可以为临时表创建索引、约束和触发器,可以在视图和同义词中引用它,可以与其他表链接。临时表的数据是临时的,专用于相应的会话,针对其执行的所有SQL的速度远比在永久表上快。

 

临时表操作速度快的原因有以下几点:

1、临时表不是永久表空间中的段,理想状态下,它们仅存在于使用它们的会话的PGA中,因此不涉及磁盘活动,甚至不涉及数据库缓冲区缓存的活动。

2、如果PGA无法容纳临时表,则将数据写出到临时表空间的临时段中。而临时表空间上的I/O远比永久表空间上的I/O速度快,因为前者不涉及数据库缓冲区缓存,而全部由会话的服务器进程直接在磁盘上执行。

3、针对临时表的DML几乎不生成重做数据,这使得其DML操作更快。

 

临时表的应用场景如在一个会话中将查询到的记录存放在临时表中,以便可以重复调用,当会话断开时,数据自动清空。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28974745/viewspace-2145921/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: AWR报告阅读提要
请登录后发表评论 登录
全部评论
刘鲁宁的个人博客。

注册时间:2016-12-29

  • 博文量
    113
  • 访问量
    287687