什么操作会 生成最多和最少的UNDO
星期五, 十一月 16th, 2007当然这里讨论的是一般情况.
一般来说insert产生的UNDO最少,因为ORACLE只需记录要 “删除”一个ROWID
UPDATE一般排名第2,对于UPDATE操作,只需记录修改的字节.UNDO中会记录一小部分.和修改量有关
DELETE一般生成的最多,对于DELETE操作,ORACLE必须把整行前映象记录到UNDO段中,
回家继续…..
当然这里讨论的是一般情况.
一般来说insert产生的UNDO最少,因为ORACLE只需记录要 “删除”一个ROWID
UPDATE一般排名第2,对于UPDATE操作,只需记录修改的字节.UNDO中会记录一小部分.和修改量有关
DELETE一般生成的最多,对于DELETE操作,ORACLE必须把整行前映象记录到UNDO段中,
回家继续…..
块清除即删除所修改数据库块上与锁定有关的信息.常见错误 ORA-01555:snapshot too old变它有关.
如果我们修改的块没有超过块缓冲区大小的10% ,而且块仍在缓冲中并且可用的,ORACLE就会在COMMIT时,清理这些块.
否则,它会忽略
DML操作 AFTER触发器(10G前) BEFORE触发器(10G以前) AFTER触发器(10G) BEFORE触发器(10G)
DELETE 不影响 不影响 不影响 不影响
INSERT 增加REDO 增加REDO 常量REDO 常量REDO
UPDATE 增加REDO 不影响 增加REDO 增加REDO
在开发的时候可以考虑下