欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何淺析mysql中的doublewrite-創(chuàng)新互聯(lián)

這篇文章給大家介紹如何淺析mysql中的double write ,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),寶雞企業(yè)網(wǎng)站建設(shè),寶雞品牌網(wǎng)站建設(shè),網(wǎng)站定制,寶雞網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,寶雞網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

介紹double write之前我們有必要了解partial page write 問題 : 
    InnoDB 的Page Size一般是16KB,其數(shù)據(jù)校驗(yàn)也是針對(duì)這16KB來計(jì)算的,將數(shù)據(jù)寫入到磁盤是以Page為單位進(jìn)行操作的。而計(jì)算機(jī)硬件和操作系統(tǒng),在極端情況下(比如斷電)往往并不能保證這一操作的原子性,16K的數(shù)據(jù),寫入4K 時(shí),發(fā)生了系統(tǒng)斷電/os crash ,只有一部分寫是成功的,這種情況下就是 partial page write 問題。
很多DBA 會(huì)想到系統(tǒng)恢復(fù)后,MySQL 可以根據(jù)redolog 進(jìn)行恢復(fù),而mysql在恢復(fù)的過程中是檢查page的checksum,checksum就是pgae的最后事務(wù)號(hào),發(fā)生partial page write 問題時(shí),page已經(jīng)損壞,找不到該page中的事務(wù)號(hào),就無法恢復(fù)。

一 double write是什么?
    Double write 是InnoDB在 tablespace上的128個(gè)頁(2個(gè)區(qū))是2MB;
其原理:
    為了解決 partial page write 問題 ,當(dāng)mysql將臟數(shù)據(jù)flush到data file的時(shí)候, 先使用memcopy 將臟數(shù)據(jù)復(fù)制到內(nèi)存中的double write buffer ,之后通過double write buffer再分2次,每次寫入1MB到共享表空間,然后馬上調(diào)用fsync函數(shù),同步到磁盤上,避免緩沖帶來的問題,在這個(gè)過程中,doublewrite是順序?qū)?,開銷并不大,在完成doublewrite寫入后,在將double write buffer寫入各表空間文件,這時(shí)是離散寫入。
如果發(fā)生了極端情況(斷電),InnoDB再次啟動(dòng)后,發(fā)現(xiàn)了一個(gè)Page數(shù)據(jù)已經(jīng)損壞,那么此時(shí)就可以從doublewrite buffer中進(jìn)行數(shù)據(jù)恢復(fù)了。

二double write的缺點(diǎn)是什么?
    位于共享表空間上的double write buffer實(shí)際上也是一個(gè)文件,寫DWB會(huì)導(dǎo)致系統(tǒng)有更多的fsync操作, 而硬盤的fsync性能, 所以它會(huì)降低mysql的整體性能. 但是并不會(huì)降低到原來的50%. 這主要是因?yàn)? 
1) double write 是一個(gè)連接的存儲(chǔ)空間, 所以硬盤在寫數(shù)據(jù)的時(shí)候是順序?qū)? 而不是隨機(jī)寫, 這樣性能更高. 
2) 將數(shù)據(jù)從double write buffer寫到真正的segment中的時(shí)候, 系統(tǒng)會(huì)自動(dòng)合并連接空間刷新的方式, 每次可以刷新多個(gè)pages;

三 double write在恢復(fù)的時(shí)候是如何工作的?
If there’s a partial page write to the doublewrite buffer itself, the original page will still be on disk in its real location.-
--如果是寫doublewrite buffer本身失敗,那么這些數(shù)據(jù)不會(huì)被寫到磁盤,InnoDB此時(shí)會(huì)從磁盤載入原始的數(shù)據(jù),然后通過InnoDB的事務(wù)日志來計(jì)算出正確的數(shù)據(jù),重新 寫入到doublewrite buffer.
When InnoDB recovers, it will use the original page instead of the corrupted copy in the doublewrite buffer. However, if the doublewrite buffer succeeds and the write to the page’s real location fails, InnoDB will use the copy in the doublewrite buffer during recovery. 
--如果 doublewrite buffer寫成功的話,但是寫磁盤失敗,InnoDB就不用通過事務(wù)日志來計(jì)算了,而是直接用buffer的數(shù)據(jù)再寫一遍.
InnoDB knows when a page is corrupt because each page has a checksum at the end; the checksum is the last thing to be written, so if the page’s contents don’t match the checksum, the page is corrupt. Upon recovery, therefore, InnoDB just reads each page in the doublewrite buffer and verifies the checksums. If a page’s checksum is incorrect, it reads the page from its original location.
--在恢復(fù)的時(shí)候,InnoDB直接比較頁面的checksum,如果不對(duì)的話,就從硬盤載入原始數(shù)據(jù),再由事務(wù)日志 開始推演出正確的數(shù)據(jù).所以InnoDB的恢復(fù)通常需要較長(zhǎng)的時(shí)間.

四 我們是否一定需要 double write ?
In some cases, the doublewrite buffer really isn’t necessary—for example, you might want to disable it on slaves. Also, some filesystems (such as ZFS) do the same thing themselves, so it is redundant for InnoDB to do it. You can disable the doublewrite buffer by setting InnoDB_doublewrite to 0.

五  如何使用 double write
InnoDB_doublewrite=1表示啟動(dòng)double write
show status like 'InnoDB_dblwr%'可以查詢double write的使用情況;
相關(guān)參數(shù)與狀態(tài)
Double write的使用情況:
show status like  "%InnoDB_dblwr%";
InnoDB_dblwr_pages_written 從bp flush 到 DBWB的個(gè)數(shù)
InnoDB_dblwr_writes            寫文件的次數(shù)
每次寫操作合并page的個(gè)數(shù)= InnoDB_dblwr_pages_written/InnoDB_dblwr_writes

關(guān)于如何淺析mysql中的double write 就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前題目:如何淺析mysql中的doublewrite-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://chinadenli.net/article10/dcphdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)Google、建站公司、營(yíng)銷型網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
人妻一区二区三区多毛女| 东京热男人的天堂一二三区| 99免费人成看国产片| 麻豆蜜桃星空传媒在线观看| 久久久精品区二区三区| 成年午夜在线免费视频| 欧美日韩国产综合在线| 91一区国产中文字幕| 丰满少妇被猛烈插入在线观看| 欧美六区视频在线观看| 欧美欧美欧美欧美一区| 99久久免费中文字幕| 欧美精品久久99九九| 色婷婷久久五月中文字幕| 好吊日视频这里都是精品| 香蕉久久夜色精品国产尤物| 国产欧美日韩在线一区二区| 亚洲妇女黄色三级视频 | 91欧美日韩国产在线观看| 国产韩国日本精品视频| 亚洲国产另类久久精品| 精品国产亚洲av成人一区| 国产目拍亚洲精品区一区| 久草精品视频精品视频精品 | 日本精品中文字幕在线视频| 婷婷基地五月激情五月| 成人欧美一区二区三区视频| 国产亚洲成av人在线观看| 亚洲国产丝袜一区二区三区四| 色哟哟哟在线观看视频| 国产午夜福利在线免费观看| 国产精品偷拍一区二区| 年轻女房东2中文字幕| 亚洲国产黄色精品在线观看| 国产午夜福利一区二区| 午夜精品久久久99热连载| 又色又爽又无遮挡的视频| 欧美日韩亚洲巨色人妻| 久久99夜色精品噜噜亚洲av| 国产av乱了乱了一区二区三区| 国产原创中文av在线播放|