COMMIT&ROLLBACK時要做哪些工作

guocun09發表於2017-11-14
COMMIT
      提交頻繁,花費的時間會上升。提交一千行和提交一行的時間相當
      COMMIT前已經完成了99.9%的工作:
      *已在SGA中產生了回滾段記錄(UNDO)
      *已在SGA中產生了修改資料塊(資料快取記憶體區)
      *已在SGA中產生了上面兩個的緩沖重做(redo)
      *已獲得所有的鎖定
      當COMMIT時,所剩下的工作:
      *為事務產生一個SCN(system change number)
      *LGWR把所有重做日誌緩沖區中的資訊儲存到硬碟的聯機重做日誌檔中並記錄
       SCN,且V$TRANSZCTION檢視中的記錄將消失
      *釋放會話佔用的所有鎖定
      *訪問多個修改事務塊,如果它們仍在資料高速緩沖中,用快速模式訪問和‘清除’
      處理COMMIT只有很少的工作要做。時間最長的總是LGWR執行的操作,避免COMMIT
      後等待過長時間,LGWR工作:1>3 2>當滿1/31MB 3>碰到任何事務COMMIT
     
ROLLBACK
      大量資料回滾花費的時間要長,ROLLBACK必須物理上取消完成工作。
      在ROLLBACK之前,資料庫已經做了許多工作:
      *已在SGA中產生了回滾段記錄
      *已在SGA中產生了修改資料塊(資料快取記憶體區?)
      *已在SGA中產生了上面兩個的緩沖重做(redo)
      *已獲得所有的鎖定
      當ROLLBACK時:
      *撤銷所有已做的修改。透過從UNDO回滾段讀取資料來完成(逆向操作)
      *釋放會話佔用的所有鎖定

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

相關文章