Archive for 十一月 16th, 2007

什么操作会 生成最多和最少的UNDO

星期五, 十一月 16th, 2007

当然这里讨论的是一般情况.

一般来说insert产生的UNDO最少,因为ORACLE只需记录要 “删除”一个ROWID

UPDATE一般排名第2,对于UPDATE操作,只需记录修改的字节.UNDO中会记录一小部分.和修改量有关

DELETE一般生成的最多,对于DELETE操作,ORACLE必须把整行前映象记录到UNDO段中,

回家继续…..

块清除(block cleanout)

星期五, 十一月 16th, 2007

块清除即删除所修改数据库块上与锁定有关的信息.常见错误 ORA-01555:snapshot too old变它有关.

如果我们修改的块没有超过块缓冲区大小的10% ,而且块仍在缓冲中并且可用的,ORACLE就会在COMMIT时,清理这些块.

否则,它会忽略

(全文…)

触发器对redo生成的影响

星期五, 十一月 16th, 2007

DML操作            AFTER触发器(10G前)     BEFORE触发器(10G以前)    AFTER触发器(10G)     BEFORE触发器(10G) 

DELETE             不影响                                 不影响                                       不影响                             不影响

INSERT             增加REDO                            增加REDO                                常量REDO                      常量REDO

UPDATE           增加REDO                             不影响                                    增加REDO                          增加REDO

在开发的时候可以考虑下