99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

mysqlinnodbdoublewrite概念是什么

小編給大家分享一下MySQL innodb double write概念是什么,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

十多年的禹會網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都營銷網站建設的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整禹會建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。成都創新互聯從事“禹會網站設計”,“禹會網站推廣”以來,每個客戶項目都認真落實執行。

double write原理圖如下:

mysql innodb double write概念是什么

通過引入doublewrite buffer的方案,每次innodb在準備寫出一個page時,先把page寫到doublewrite buffer中.如果在寫doublewrite buffer時,發生了意外,但是數據文件中的原來的page不受影響,這樣在下次啟動時,可以通過innodb的redolog進行恢復.如果在寫doublewrite buffer成功后,mysql會把doublewrite buffer的內容寫到數據文件中,如果在這個過程又出現了

意外,沒有關系,重啟后mysql可以通過從doublewrite buffer找到好的page,再用該好的page去覆蓋磁盤上壞的page即可。

所以在正常的情況下,mysql寫數據page時,會寫兩遍到磁盤上,第一遍是寫到doublewrite buffer,第二遍是從doublewrite buffer寫到真正的數據文件中.

為了解決 partial page write問題 ,當mysql將臟數據flush到data file的時候,先使用memcopy將臟數據復制到內存中的double write buffer,通過double write buffer再分2次,每次寫入1MB到共享表空間,然后馬上調用fsync函數,同步到磁盤上,避免緩沖帶來的問題。

兩次寫需要額外添加兩個部分:

1)內存中的兩次寫緩沖(doublewrite buffer),大小為2MB

2)磁盤上共享表空間中連續的128頁,大小也為2MB。其中120個用于批量寫臟頁,另外8個用于Single Page Flush。做區分的原因是批量刷臟是后臺線程做的,不影響前臺線程。而Single page flush是用戶線程發起的,需要盡快的刷臟頁并替換出一個空閑頁出來。

相關參數解釋:

(root@localhost)-[11:35:25]-[(none)]>show status like "%InnoDB_dblwr%";

+----------------------------+-----------+

| Variable_name              | Value     |

+----------------------------+-----------+

| Innodb_dblwr_pages_written | 882384812 |

| Innodb_dblwr_writes        | 61236457  |

+----------------------------+-----------+

2 rows in set (0.01 sec)

InnoDB_dblwr_pages_written   doublewrite寫的頁的總數

InnoDB_dblwr_writes          doublewrite寫的文件的次數

因為臟頁刷新到磁盤的寫入單元小于單個頁的大小,如果在寫入過程中數據庫突然宕機,可能會使數據頁的寫入不完成,

造成數據頁的損壞。而redo log中記錄的是對頁的物理操作,如果數據頁損壞了,通過redo log也無法進行恢復。

所以為了保證數據頁的寫入安全,引入了double write。double write的實現分兩個部分,一個是緩沖池中2M的內存塊

大小,一個是共享表空間中連續的128個頁,大小是2M。臟頁從flush list刷新時,并不是直接刷新到磁盤而是先調用

函數(memcpy),將臟頁拷貝到double write buffer中,然后再分兩次,每次1M將double write buffer 刷新到

磁盤double write 區,之后再調用fsync操作,同步到磁盤。

如果是寫doublewrite buffer本身失敗,那么這些數據不會被寫到磁盤,innodb此時會從磁盤載入原始的數據,然后通過innodb的事務日志來計算出正確的數據,重新 寫入到doublewrite buffer。

如果應用在業務高峰期,innodb_dblwr_pages_written:innodb_dblwr_writes遠小于64:1,則說明,系統寫入壓力不大。

雖然,double write buffer刷新到磁盤的時候是順序寫,但還是是有性能損耗的。

如果系統本身支持頁的安全性保障(部分寫失效防范機制),如ZFS,那么就可以禁用掉該特性(skip_innodb_doublewrite)。

看完了這篇文章,相信你對“mysql innodb double write概念是什么”有了一定的了解,如果想了解更多相關知識,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!

文章標題:mysqlinnodbdoublewrite概念是什么
當前URL:http://www.yijiale78.com/article2/pcspoc.html

成都網站建設公司_創新互聯,為您提供網站改版動態網站網站排名網站設計網站策劃品牌網站設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計