oracle block cleanout塊清除_延遲塊清除

wisdomone1發表於2013-03-21

       
1,oracle延遲塊清除是基於io效能的考慮而設計
2,設想一個UPDATE大量資料的操作,因為執行時間較長,一部分已修改的塊已被緩衝池flush out寫至磁碟,
  當UPDATE操作完成執行COMMIT操作時,則需要將那些已寫至磁碟的資料塊重新讀入,這將產生大量的io
3,針對上述情況產生延遲塊清除

何時發生延遲塊清除:
1,在更新過程中,被緩衝池flush out寫至磁碟的塊
2,若更新操作涉及的塊超過了塊緩衝區快取的10%時,超出的部分塊。      
3,雖然commit不會對這些已flush到磁碟的資料塊進行清除塊itl標誌操作;
 但會修改回滾段的段頭
  回滾段的段頭包括了段中的事務的字典,COMMIT操作將本事務轉化為非ACTIVE狀態。
4,當下一次操作如SELECT,UPDATE,INSERT或DELETE訪問到這些塊(已flush到磁碟的資料塊時)時可能需要在讀入後完成塊清除,這樣的操作稱之為塊延遲清除
5,具體如何操作呢?
  1,塊延遲清除透過事務槽上的回滾段號(已flush回磁碟並重讀回buffer cache的資料塊之itl),槽號等資訊訪問回滾段頭的事務字典;
    2,此時回滾段頭的事務字典標記已是非active狀態;則清除塊上的itl相關資訊
6,一般情況,延遲塊清除多發生於select操作中

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

相關文章