从数据安全性来看,对表记录的操作写日志是不可避免的,否则备份恢复就无法谈起了,只是现实中我们真的有一部分应用对表的某些操作是不需要恢复的,比如运算过程中临时处理的中间结果集,这时我们就可以考虑用全局临时表来实现。
全局临时表分为两种类型,一种是基于会话的全局临时表(Commit preserver rows),一种是基于事务的全局临时表(on commit delete rows),具体建表语法如下:
通过简单的比较我们即可得出结论,无论是插入更新还是删除,操作普通表产生的日志都比全局临时表要多。
全局临时表的两大重要特性,
1.高效删除记录
其实在我看来,全局临时表最终的特点有两个。
一是高效删除记录,基于事务的全局临时表commit或者session连接退出后,临时表记录自动删除。基于会话的全局临时表则是session连接退出后,临时表记录自动删除,都无须我们动手去操作。
二是针对不同会话数据独立,不同的session访问全局临时表,看到的结果不同。
这两点既是全局临时表最重要的特点,也是最有用的特点,在工作中某些特点的场合,发挥出了巨大的作用。
首先我们看看基于事务的全局临时表commit后,记录是否被删除了,并查看产生日志的情况,如下: