理解redo(9)10g R2後oracle對redo寫的增強

來源:互聯網
上載者:User

   

   

    10G R2後,ORACLE提供了一個新參數commit_write來控制用戶端commit後,ORACLE寫日誌的行為。這個參數值有四種組合。

         ·  immediate , wait
            注釋:Server process在提交時使用semctl發送訊號給LGWR,通知其Flush Log Buffer,並等待LGWR發回的訊息(semtimedop).
                       LGWR在接收到訊息後, Flush log buffer到磁碟,通過semctl發送訊號給Server Process,告知其commit成功.

         ·  immediate , nowait

         ·  batch , wait
            注釋:Server Process在提交時使用semctl發送訊號給LGWR,要求其提交後通知此Server Process進程,並等待此訊息返回(運行semtmdop)
            LGWR在經過一定的內部時間(Timeout)後, Flush Log Buffer到磁碟,並使用semctl通知此Server Process進程

         ·  batch , nowait

 

    傳統的,我們的預設寫方式都是immediate , wait。代表server process立即通知LGWR重新整理日誌,LGWR重新整理完log buffer後通知server process,COMMIT成功。
    如果用了nowait選項,your session doesn’t send a message to lgwr at all。不管是batch,還是immediate,在指定nowait時候,事務都是在in the near future進行提交,
    而不是立即提交。因為,由可知:Immediate nowait和Batch nowait的redo synch writes次數都是0,即沒有立即進行日誌寫。也就是nowait選項表示,沒寫完就返回“commit complete”。

    如果你的系統的資料非常的重要,不能丟失任何的資料,那麼需要確認wait選項,如果你的事務都是非常的小,那麼batch wait將會稍微提高你的事務效率,減少了redo blocks的浪費。如果你的系統的資料丟失一點沒關係,那麼batch nowait是你最好的選擇。這種組合對於redo的size,redo的浪費,以及使用者的等待時間都是最小的。

    batch和immediate有個關鍵的不同,immedaite把commit當成是一個單獨的change vector。可知:immediate比batch多了一倍的redo entries。這一倍的實際內容就是commit本身產生的。也就是,batch的含義是commit本身的提交不需要以單條redo reocord的形式出現在redo log裡,而immediate含義是commit本身也以一條單獨的redo record記錄出現在redo
log裡。
    但不管是不是batch,ORACLE都會默默的進行group commit。

 

    

08:30:19 hr@ORCL (^ω^) show parameter commit_writNAME                                 TYPE       VALUE------------------------------------ ---------- ------------------------------commit_write                         string

    預設是immediate、wait。我們可以有三種方式改變之:

    1)執行個體層級

          alter system set commit_write=batch,wait;

    2)會話層級

          alter session set commit_write=batch,wait;

    3)語句層級

          commit write batch wait;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.