您的位置:首页 > 其它

Ask Hoegh(1)——临时表会产生redo吗?

2016-01-04 15:02 731 查看
问:临时表会产生redo吗?
Hoegh:严格意义上来说,会产生redo。
   临时表不会为他们的块生成redo,因此,对临时表的操作不是可恢复的。修改临时表中的一个块时,不会讲这个修改记录记录到重做日志文件中。不过,临时表会产生undo,而这个undo会记入日志。因此,临时表也会生成一些redo。
   那么,临时表为什么要支持undo呢?这是因为临时表一般情况下表现得和正常表一样,支持事务、支持约束,这样如果在事务中执行失败是要回滚这条语句的。
   根据Tom的测试结果,关于临时表上的DML活动,可以得出以下一般结论:
  •    Insert操作会产生很少甚至不产生undo/redo活动
  •    Delete操作在临时表上产生的redo和在普通表上生成的redo一样多
  •    Update操作会产生普通表一半的redo
    基于以上了解,我们在使用临时表过程中要尽量避免删除临时表。可以使用ON COMMIT DELETE ROWS选项,或者使用truncate语句,这些方法都不会生成redo。另外,应尽量避免更新临时表。这样,我们就能最优的使用临时表不生成redo的特有能力。


hoegh 2016.01.04 -- The End --

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

转载于:http://blog.itpub.net/30162081/viewspace-1970753/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: