<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Innodb三大特性之doublewrite_MySQL

        來源:懂視網 責編:小采 時間:2020-11-09 20:07:35
        文檔

        Innodb三大特性之doublewrite_MySQL

        Innodb三大特性之doublewrite_MySQL:1、doublewrite buffer(mysql官方的介紹) InnoDB uses a novel file flush technique called doublewrite. Before writing pages to the data files, InnoDB first writes them to a contiguous
        推薦度:
        導讀Innodb三大特性之doublewrite_MySQL:1、doublewrite buffer(mysql官方的介紹) InnoDB uses a novel file flush technique called doublewrite. Before writing pages to the data files, InnoDB first writes them to a contiguous

        1、doublewrite buffer(mysql官方的介紹)

        InnoDB uses a novel file flush technique called doublewrite. Before writing pages to the data files, InnoDB first writes them to a contiguous area called the doublewrite buffer. Only after the write and the flush to the doublewrite buffer have completed, does InnoDB write the pages to their proper positions in the data file. If there is an operating system, storage subsystem, or mysqld process crash in the middle of a page write, InnoDB can later find a good copy of the page from the doublewrite buffer during crash recovery.

        Although data is always written twice, the doublewrite buffer does not require twice as much I/O overhead or twice as many I/O operations. Data is written to the buffer itself as a large sequential chunk, with a single fsync() call to the operating system.

        To turn off the doublewrite buffer, specify the option innodb_doublewrite=0.

        2、partial page write

        InnoDB 的Page Size一般是16KB,其數據校驗也是針對這16KB來計算的,將數據寫入到磁盤是以Page為單位進行操作的。而計算機硬件和操作系統,在極端情況下 (比如斷電)往往并不能保證這一操作的原子性,16K的數據,寫入4K 時,發生了系統斷電/os crash ,只有一部分寫是成功的,這種情況下就是 partial page write 問題。

        很多DBA 會想到系統恢復后,MySQL 可以根據redo log 進行恢復,而mysql在恢復的過程中是檢查page的checksum,checksum就是pgae的最后事務號,發生partial page write 問題時,page已經損壞,找不到該page中的事務號,就無法恢復

        所以說,當page 損壞之后,其實應用redo是沒有意義的,這時候無法使用redo來恢復,因為原始頁已經損壞了,會發生數據丟失。

        3、doublewrite

        在InnoDB將BP中的Dirty Page刷(flush)到磁盤上時,首先會將(memcpy函數)Page刷到InnoDB tablespace的一個區域中,我們稱該區域為Double write Buffer(大小為2MB,每次寫入1MB)。在向Double write Buffer寫入成功后,第二步、再將數據拷貝到數據文件對應的位置。

        當第二步過程中發生故障,也就是發生partial page write的問題。恢復的時候先檢查頁內的checksum是否相同,不一致,則直接從doublewrite中恢復。

        1)如果寫dw buffer失敗。那么這些數據不會寫到磁盤,innodb會載入磁盤原始數據和redo日志比較,并重新刷到dw buffer。

        2)如果寫dw buffer成功,但是刷新到磁盤失敗,那么innodb就不會通過事務日志來恢復了,而是直接刷新dw buffer中的數據。

        4、對性能的影響

        系統需要將數據寫兩份,一般認為,Double Write是會降低系統性能的。peter猜測可能會有5-10%的性能損失,但是因為實現了數據的一致,是值得的。Mark Callaghan認為這應該是存儲層面應該解決的問題,放在數據庫層面無疑是犧牲了很多性能的。

        事實上,Double Write對性能影響并沒有你想象(寫兩遍性能應該降低了50%吧?)的那么大。在BP中一次性往往會有很多的Dirty Page同時被flush,Double Write則把這些寫操作,由隨機寫轉化為了順序寫。而在Double Write的第二個階段,因為Double Write Buffer中積累了很多Dirty Page,所以向真正的數據文件中寫數據的時候,可能有很多寫操作可以合并,這樣有可能會降低Fsync的調用次數。

        基于上面的原因,Double Write并沒有想象的那么糟。另外,Dimitri在測試后,發現打開和關閉Double Write對效率的影響并不大。

        5、doublewrite參數

        mysql> show variables like "%double%";
        +--------------------+-------+
        | Variable_name | Value |
        +--------------------+-------+
        | innodb_doublewrite | ON |
        +--------------------+-------+
        1 row in set (0.00 sec)
        
        mysql> SHOW STATUS LIKE "%innodb_dblwr%";
        +----------------------------+-------+
        | Variable_name | Value |
        +----------------------------+-------+
        | Innodb_dblwr_pages_written | 447 |
        | Innodb_dblwr_writes | 38 |
        +----------------------------+-------+
        2 rows in set (0.00 sec)

        從上面可以看出, Flush了447次到doublewrite buffer中,寫文件共38次,則每次write合并了447/38次flush

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Innodb三大特性之doublewrite_MySQL

        Innodb三大特性之doublewrite_MySQL:1、doublewrite buffer(mysql官方的介紹) InnoDB uses a novel file flush technique called doublewrite. Before writing pages to the data files, InnoDB first writes them to a contiguous
        推薦度:
        標簽: 三大 my mysql
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲an日韩专区在线| 亚洲网站在线免费观看| 久久99国产综合精品免费| 久久精品国产亚洲5555| 日韩毛片免费一二三| 亚洲精品国产精品乱码不卡| 亚洲福利视频一区| 亚洲av永久中文无码精品综合| 无人在线观看免费高清视频 | 啦啦啦www免费视频| 亚洲av午夜电影在线观看| 午夜精品在线免费观看| 国产精品亚洲综合网站| 亚洲国产高清精品线久久| 精品久久久久久国产免费了| 99久久久国产精品免费无卡顿 | 久久精品国产亚洲AV蜜臀色欲| 国产一卡2卡3卡4卡2021免费观看| 亚洲 欧洲 日韩 综合在线| 免费无码又爽又刺激网站直播| 亚洲AV永久无码区成人网站| 美女被艹免费视频| 亚洲中文字幕无码久久精品1| 免费国产成人α片| 亚洲人成人77777在线播放| 久久精品一区二区免费看| 国产中文字幕免费观看| 一级一级毛片免费播放| 久久99亚洲网美利坚合众国| 好男人www免费高清视频在线 | 色婷婷亚洲十月十月色天| 最新免费jlzzjlzz在线播放| 猫咪www免费人成网站| 亚洲资源在线观看| 好爽…又高潮了毛片免费看 | 特色特黄a毛片高清免费观看| 亚洲成a人片在线观看日本| 思思re热免费精品视频66| 黄色毛片免费在线观看| 久久亚洲日韩看片无码| 亚洲AV无码成人精品区大在线|