日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 日志原理剖析

發布時間:2025/3/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 日志原理剖析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這篇文章是參考甲骨論老相老師的教學視頻
http://v.youku.com/v_show/id_XMzk0NjYxNzgw.html
所做的學習筆記
?

作為1個DBA, 需要學習許多數據庫知識, 但是目的無非兩大部分.
1. 保持數據庫數據的一致性
2. 優化數據庫性能


而日志系統只對應第1點,日志系統就是用來保持數據的一致性的.

我們先回顧下之前講過的sql語句執行流程


如上圖.可以見到:
1. 產生日志的原因是Buffer cache里發生的數據改動.
2. buffer cache里數據改動產生的日志被寫入Redo log buffer(日志緩存)里.
3. 后臺進程LGWR會將redo log buffer里的日志寫入到硬盤上的日志文件(物理IO)



??????? 而且之前我們講過,Buffer cache是由許多個大小為1個block size 的buffer組成的. 所以buffer cache里的數據改動實際上就是buffer的改動.


?????? 從邏輯上看,我們可以假定Buffer cache存在一名記錄者. 這名記錄者可以實施地觀察出buffer cache哪1個buffer被修改, 在那個時間點被修改, 并嚴格按照修改時間順序把被修改的buffer的改動記錄下來.''

如下圖:
3. 并不關心buffer是被哪個session修改的????? 3. 并不關心buffer是被哪個session修改的

???? 當然,實際上Database Buffer Cache中是不存在記錄者這個東西的.
???? 不過這兩個邏輯也讓我們明白三點:

???? 1. 日志記錄的單位是buffer.
???? 2. 嚴格按照buffer被修改的時間順序來記錄.
???? 3. 并不關心buffer是被哪個session修改的

????? 從實際上看, buffer cache里的buffer是被server process修改的, 一旦server process修改了1個buffer里的數據, server process就同時生成重做日志數據,并放入與該server process對應的PGA中.? 然后根據一些觸發條件,會將PGA里的日志寫入到SGA里面的redo log buffer中,? 最后會被后臺進程LGWR寫入到日志文件中...

????? 我們也可以分析出
????? 1. 對小量數據的多次修改可能會產生大量的日志數據.
????? 2. 大量的日志數據被寫入到日志文件會占用大量IO資源


????? 這一節,老相老師只提到這幾個點,? 他說以后講優化數據庫時會再詳細講..

總結

以上是生活随笔為你收集整理的Oracle 日志原理剖析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。