修改一個資料塊Oracle需要做的工作

wei-xh發表於2012-06-21
修改一個資料塊Oracle需要做的工作(從寫的角度做的描述,latch等其他角度沒做描述):
1)修改Undo段頭塊登記一個事務,標記事務開始
2)產生步驟一的Redo Log
3)真正修改資料塊前,先把舊映象記錄在UNDO塊用來做回滾
4)產生步驟3的Redo Log
5)修改資料塊(我們真正想進行的操作)
6)產生步驟5的Redo Log
7)修改Undo 段頭塊記錄事務結束
8)產生步驟7的Redo Log
為了容易理解,Redo的產生都放在了修改操作之前,Oracle真實發生的操作與我描述的相反,都是先產生Redo才會去修改對應的塊。
我們只是想修改一個資料塊,Oracle做了8個工作來進行。你可能會指出,我這樣的描述存在水分,其中步驟1,2,7,8一個事務只
需要做一次,一個事務如果存在多次修改,每個資料塊只有3,4,5,6步驟是都需要做的(那也是4倍的工作量),1,2,7,8一個
事務只需要一次。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-733547/,如需轉載,請註明出處,否則將追究法律責任。

相關文章