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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Log Buffer

發(fā)布時(shí)間:2025/4/16 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Log Buffer 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Log Buffer

一、Log Buffer的引入

? ? Oracle有一個(gè)原則:只要是已經(jīng)提交的數(shù)據(jù),就不會(huì)丟失,保證數(shù)據(jù)庫的一致性。這該如何實(shí)現(xiàn)?事物提交時(shí),直接寫入dbf中,效率是極低的。因?yàn)橹苯訉懭胛募到y(tǒng),buffer對(duì)應(yīng)的數(shù)據(jù)塊可能分布在文件系統(tǒng)的各個(gè)地方,提交時(shí)直接寫入,會(huì)有大量的IO和尋道時(shí)間,效率極低。同時(shí),數(shù)據(jù)庫在運(yùn)行過程中,不可避免的要遇到各種能夠?qū)е聰?shù)據(jù)塊庫損壞的情況。比如突然斷電、oracle或者操作系統(tǒng)的程序bug導(dǎo)致數(shù)據(jù)庫內(nèi)部邏輯結(jié)構(gòu)損壞、磁盤介質(zhì)損壞等,都有可能造成數(shù)據(jù)庫崩潰,從而導(dǎo)致數(shù)據(jù)丟失的現(xiàn)象發(fā)生。Oracle引入了Log Buffer的機(jī)制,完美的解決了以上兩個(gè)問題。

二、Log Buffer的實(shí)現(xiàn)原理

? ? Oracle在SGA中專門開辟一塊空間,用來存放Log Buffer。LogBuffer將所有數(shù)據(jù)庫中所有改變數(shù)據(jù)塊的操作,都原原本本的記錄下來。這些改變數(shù)據(jù)塊的操作不僅包括對(duì)數(shù)據(jù)表的DML或者對(duì)數(shù)據(jù)字典的DDL,還包括對(duì)索引的改變、對(duì)回滾段數(shù)據(jù)塊的改變、對(duì)臨時(shí)表空間的臨時(shí)段的改變等。只有將數(shù)據(jù)庫中所有的變化都記錄下來,當(dāng)發(fā)生數(shù)據(jù)庫損壞時(shí),才能夠從損壞時(shí)的那一點(diǎn)開始,將之后數(shù)據(jù)庫中的變化重新運(yùn)用一遍,從而達(dá)到恢復(fù)數(shù)據(jù)庫的目的。

1、日志記錄方式

(1)邏輯的記錄方式

????邏輯的記錄方式:也就是用描述性的語句來記錄整個(gè)變化過程。比如對(duì)于某個(gè)update更新操作來說來說,可以記錄為兩條語句:delete舊值以及insert新值。這種方式的優(yōu)點(diǎn)是非常節(jié)省空間,因?yàn)閷?duì)每個(gè)操作,只需要記錄幾條邏輯上的語句即可。但是缺點(diǎn)也很明顯,就是一旦需要進(jìn)行恢復(fù),就會(huì)非常消耗資源。設(shè)想一下,某個(gè)update操作更新了非常多的數(shù)據(jù)塊,由于buffer cache內(nèi)存有限,很多臟數(shù)據(jù)塊都已經(jīng)寫入了數(shù)據(jù)文件。但就在更新快結(jié)束時(shí),突然發(fā)生斷電,所做的更新丟失。那么重新啟動(dòng)實(shí)例時(shí),oracle需要應(yīng)用日志文件里的記錄,于是重新發(fā)出delete舊值以及insert新值的語句。這個(gè)過程需要重新查找數(shù)據(jù)文件中符合條件的數(shù)據(jù)塊,然后再挑出來進(jìn)行更新。這個(gè)過程將非常消耗時(shí)間,而且會(huì)占用大量的buffer cache。

(2)物理的記錄方式

????物理的記錄方式,也就是將每個(gè)數(shù)據(jù)塊改變前的鏡像和改變后的鏡像都記錄下來。這種方式優(yōu)點(diǎn)就是恢復(fù)起來速度非常快,直接根據(jù)日志文件里所記錄的數(shù)據(jù)塊地址和內(nèi)容更新數(shù)據(jù)文件中對(duì)應(yīng)的數(shù)據(jù)塊。但是缺點(diǎn)也很明顯,就是非常占用磁盤空間。

(3)ORACLE使用的日志記錄方式

? ? oracle采用了邏輯和物理相結(jié)合的方式。也就是說,oracle針對(duì)每個(gè)數(shù)據(jù)塊,記錄了插入某個(gè)值或者刪除某個(gè)值的描述語句。假如某個(gè)update更新了100個(gè)數(shù)據(jù)塊,則oracle會(huì)針對(duì)每個(gè)數(shù)據(jù)塊記錄一對(duì)delete舊值和insert新值的語句,共有100對(duì)這樣的描述語句。通過這種方式,oracle獲得了物理記錄方式的快速恢復(fù)的優(yōu)點(diǎn),同時(shí)又獲得了邏輯記錄方式的節(jié)省空間的優(yōu)點(diǎn)。

三、SQL提交過程分析

Oracle引入Log buffer之后,sql的執(zhí)行和提交過程如下:

?

?

修改數(shù)據(jù)Sql的執(zhí)行過程:

1、客戶端通過數(shù)據(jù)庫連接提交sqloracle

2、Oracle為該數(shù)據(jù)庫連接分配一個(gè)前臺(tái)進(jìn)程(Server Process),和PGA

3、PGA計(jì)算sqlhash值,根據(jù)hash值查找shared pool中的Library Cache中,是否存在該sql對(duì)應(yīng)的執(zhí)行計(jì)劃。

4、如果有該sql對(duì)應(yīng)的執(zhí)行計(jì)劃,則跳到下一步。如果沒有,需要生產(chǎn)相應(yīng)的最優(yōu)執(zhí)行計(jì)劃,并將執(zhí)行計(jì)劃掛到Library Cache的相應(yīng)位置。

5、根據(jù)執(zhí)行計(jì)劃,查找需要的數(shù)據(jù),是否在buffer cache中,如果存在,則跳至下一步。如果沒有,PGA需發(fā)IO指令,到文件系統(tǒng)中加載相應(yīng)的數(shù)據(jù)塊到buffer cache中。

6、修改相應(yīng)的buffer。在修改的過程中,會(huì)生成相應(yīng)的日志,放入PGA中。當(dāng)積累到一定數(shù)量,PGA將日志寫入到log buffer中。

7、提交。提交時(shí),pga并不會(huì)調(diào)用DBWR寫入數(shù)據(jù)到文件系統(tǒng),而只是調(diào)用LGWR,將修改日志按順序的記錄到文件系統(tǒng)中。由于是按照順序記錄,所以比直接將buffer寫入到dbf文件的速度快很多,因?yàn)楣?jié)省了磁盤的尋道時(shí)間。

????因?yàn)?/span>log buffer空間小,提交頻繁,所以,此種提交方式,保證了數(shù)據(jù)的一致性。就算數(shù)據(jù)庫掉電,沒有來得及將臟buffer寫入dbf中,也能保證已提交的數(shù)據(jù)不會(huì)丟失。因?yàn)槿罩疚募4媪怂械?/span>buffer的變更,所以,根據(jù)日志文件,都能跑出已經(jīng)提交的數(shù)據(jù),并提交。

四、LGWR觸發(fā)條件:

1、用戶提交

2、1/3的重做日志緩沖區(qū)未被寫入磁盤

3、有大于1M的緩存沒有寫入磁盤

4、write-ahead-log日志寫入優(yōu)先 ?dbwr需要寫入數(shù)據(jù)的scn大于lgwr記錄的scn,dewr觸發(fā)lgwr寫入。

5、發(fā)生日志切換時(shí)觸發(fā)LGWR。

6、每3秒調(diào)用一次。

五、日志系統(tǒng)的意義

1、大幅提高commit的速度

? ? 為何?Oracle提交時(shí),調(diào)用的是日志提交。日志提交比直接寫入dbf快在哪?因?yàn)橛?jì)算機(jī)系統(tǒng)的瓶頸就是IO,而IO的瓶頸是磁頭的尋道時(shí)間。由于日志記錄到redo log中是按順序記錄的,而block是分布在dbf文件的各個(gè)角落。所以,寫入block會(huì)有很多的磁頭尋道時(shí)間。因此,日志存檔會(huì)比數(shù)據(jù)入庫快很多。

? ?這里引出另一個(gè)問題。Redo log,一般是放在存儲(chǔ)上。那應(yīng)該放置在什么樣的磁盤上呢?這里建議:redo log 日志,需要放到io/ps 很高的磁盤上,因?yàn)閷懙暮茴l繁,量少,順序?qū)?#xff0c;不要放到red5、red6上。可以放在read10 或者read01上,最好放在固態(tài)盤上。

2、成就buffer cache的寫緩存

? ? ?計(jì)算機(jī)系統(tǒng)中,所涉及的緩存,一般都只有緩存讀。每當(dāng)要寫入的時(shí)候,都是直接針對(duì)文件系統(tǒng)中的文件進(jìn)行操作。而如果,直接多次修改緩存,就能實(shí)現(xiàn)對(duì)文件的修改,這種緩存,就叫做寫緩存。存儲(chǔ)上的緩存和oracle 的buffer cache就是典型的寫緩存。

? 因?yàn)橛腥罩鞠到y(tǒng)的存在,server process在提交的時(shí)候,不必每次的調(diào)用DBWR將修改的臟buffer寫入到dbf中,而只需將該buffer加入到LRUW鏈表中,不用擔(dān)心buffer的改動(dòng)沒有保存導(dǎo)致數(shù)據(jù)丟失。這樣就實(shí)現(xiàn)了buffer cache的寫緩存。

?

轉(zhuǎn)載于:https://www.cnblogs.com/ironyoda/p/6051387.html

總結(jié)

以上是生活随笔為你收集整理的Log Buffer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美熟妇久久久久 | 久久黑人 | 欧美不卡一区二区三区 | 国产夜夜爽| 三级国产三级在线 | 国产亚洲精品aaaaaaa片 | 人妖和人妖互交性xxxx视频 | 日韩视频中文 | 噼里啪啦免费看 | 91爱爱网| 国产乱人伦app精品久久 | a级国产视频 | 日本不卡在线观看 | 男人天堂中文字幕 | 久久亚洲AV成人无码国产人妖 | 欧美a级肉欲大片xxx | 大香焦久久 | 国家队动漫免费观看在线观看晨光 | 一级福利片 | 久久精品国产一区二区 | 欧美啪啪一区二区 | 夜色资源网| 久草免费在线观看 | 日韩欧美在线视频观看 | 欧美日韩成人在线 | a毛片在线观看 | 久久精品国产亚洲av久一一区 | 免费涩涩 | 日韩精品电影网 | 法国空姐在线观看视频 | 久久av一区二区三区漫画 | 日韩在线免费视频观看 | 在线国产福利 | 亚洲国产欧美在线人成 | 天堂网成人 | 日韩精品一区二区三区高清免费 | 97伊人网 | 国产理伦 | 粗大黑人巨茎大战欧美成人免费看 | 国产成人aⅴ | 亚洲天堂五月天 | 免费黄色在线播放 | 精品福利一区 | 99热这里只有精品首页 | 新婚若妻侵犯中文字幕 | 嫩草视频免费观看 | 自拍 偷拍 欧美 | 美女洗澡隐私免费网站 | 一个人在线观看www软件 | 秋霞成人午夜伦在线观看 | 韩国三级做爰视频 | jizz黄色片| 涩涩视频在线 | 精品久久久久久久久久久久久久久 | 午夜精品久久久久久久无码 | 亚洲阿v天堂 | 99热麻豆| 成年人视频在线观看免费 | 东北熟女一区二区三区 | 黄色片网站在线免费观看 | 精品日韩 | 欧美黄色录像 | 亚洲人xxx| 丝袜视频一区 | 欧美一区二区三区 | 性欧美丰满熟妇xxxx性仙踪林 | 国产私拍 | 久久亚洲天堂 | 国产乱码一区二区 | 亚洲精品高清无码视频 | 狂野欧美性猛交xxxx | 亚洲视频 中文字幕 | 一级a性色生活片久久毛片 爱爱高潮视频 | 99国产精品久久久久久久成人 | 婷婷丁香一区二区三区 | 成人妇女淫片aaaa视频 | 69视频在线播放 | 国产18毛片 | 中文字幕高潮 | 在线观看免费av片 | 国产在线观看一区二区三区 | 狠狠干免费视频 | 中文字幕成人在线 | 91免费国产在线观看 | 欧美人妖xxxx | 久久精品在线免费观看 | 亚洲av日韩av不卡在线观看 | 九九综合九九 | 亚洲色图国产精品 | 毛片小视频 | 久久香蕉国产 | 尤物视频网站在线观看 | 国产黄色片视频 | 狠狠2020| 亚洲视频中文字幕在线观看 | 美女考逼 | 精品久久BBBBB精品人妻 | 秋霞在线观看视频 | 中文字幕无码av波多野吉衣 |