成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

(轉)InnoDB之DirtyPage、Redolog

作者:蘇普 | 【轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明】
地址:http://rdc.taobao.com/blog/dba/html/317_innodb-dirty-page-redo-log.html

網(wǎng)站設計、成都網(wǎng)站建設的開發(fā),更需要了解用戶,從用戶角度來建設網(wǎng)站,獲得較好的用戶體驗。成都創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經驗,見的多,溝通容易、能幫助客戶提出的運營建議。作為成都一家網(wǎng)絡公司,打造的就是網(wǎng)站建設產品直銷的概念。選擇成都創(chuàng)新互聯(lián),不只是建站,我們把建站作為產品,不斷的更新、完善,讓每位來訪用戶感受到浩方產品的價值服務。

在InnoDB中,buffer pool里面的dirty page一方面可以加快數(shù)據(jù)處理速度,同時也會造成數(shù)據(jù)的不一致(RAM vs DISK)。本文介紹了dirty page是如何產生,以及InnoDB如何利用redo log如何消除dirty page產生的數(shù)據(jù)不一致。


[@more@]

  1. 當事務(Transaction)需要修改某條記錄(row)時,InnoDB需要將該數(shù)據(jù)所在的page從 disk讀到buffer pool中,事務提交后,InnoDB修改page中的記錄(row)。這時buffer pool中的page就已經和disk中的不一樣了,我們稱buffer pool中的page為dirty page。Dirty page等待flush到disk上。
    (轉)InnoDB之Dirty Page、Redo log
  2. dirty page既然是在Buffer pool中,那么如果系統(tǒng)突然斷電Dirty page中的數(shù)據(jù)修改是否會丟失?這個擔心是很有必要的,例如如果一個用戶完成一個操作(數(shù)據(jù)庫完成了一個事務,page已經在buffer pool中修改,但dirty page尚未flush),這時系統(tǒng)斷電,buffer pool數(shù)據(jù)全部消失。那么,這個用戶完成的操作(導致的數(shù)據(jù)庫修改)是否會丟失呢?答案是不會 (innodb_flush_log_at_trx_commit=1)。這就是redo log要做的事情,在disk上記錄更新。
  3. redo log在每次事務commit的時候,就立刻將事務更改操作記錄到redo log。所以即使buffer pool中的dirty page在斷電時丟失,InnoDB在啟動時,仍然會根據(jù)redo log中的記錄完成數(shù)據(jù)恢復。
  4. redo log的另一個作用是,通過延遲dirty page的flush最小化磁盤的random writes。(redo log會合并一段時間內TRX對某個page的修改)
    (轉)InnoDB之Dirty Page、Redo log
  5. 正常情況下,dirty page什么時候flush到disk上?
    1).redo log是一個環(huán)(ring)結構,當redo空間占滿時,將會將部分dirty page flush到disk上,然后釋放部分redo log。這種情況可以通過Innodb_log_wait(SHOW GLOBAL STATUS)觀察,情況發(fā)生該計數(shù)器會自增一次。
    2). 當需要在Buffer pool分配一個page,但是已經滿了,并且所有的page都是dirty的(否則可以釋放不dirty的page),通常是不會發(fā)生的。這時候必須 flush dirty pages to disk。這種情況將會記錄到Innodb_buffer_pool_wait_free中。一般地,可以可以通過啟動參數(shù) innodb_max_dirty_pages_pct控制這種情況,當buffer pool中的dirty page到達這個比例的時候,將會強制設定一個checkpoint,并把dirty page flush到disk中。
    3).檢測到系統(tǒng)空閑的時候,會flush,每次64 pages。
  6. 涉及的InnoDB配置參數(shù):innodb_flush_log_at_trx_commit、innodb_max_dirty_pages_pct;狀態(tài)參數(shù):Innodb_log_wait、Innodb_buffer_pool_wait_free。

參考文獻

  1. http://MySQLdump.azundris.com/archives/78-Configuring-InnoDB-An-InnoDB-tutorial.html
  2. http://dev.mysql.com/doc/refman/5.0/en/innodb.html

本文標題:(轉)InnoDB之DirtyPage、Redolog
網(wǎng)頁地址:http://jinyejixie.com/article44/gdjpee.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、服務器托管、域名注冊、網(wǎng)頁設計公司、網(wǎng)站改版、動態(tài)網(wǎng)站

廣告

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

成都定制網(wǎng)站網(wǎng)頁設計
沙河市| 连云港市| 上虞市| 井陉县| 宝山区| 常德市| 上林县| 涡阳县| 临城县| 城固县| 旬阳县| 青海省| 达孜县| 株洲县| 白山市| 玛纳斯县| 楚雄市| 东阿县| 九龙城区| 西城区| 宿州市| 宾川县| 多伦县| 鹤壁市| 南部县| 曲麻莱县| 连江县| 沅江市| 蒙山县| 边坝县| 兴仁县| 托克逊县| 新晃| 石景山区| 蒙城县| 大田县| 崇左市| 齐齐哈尔市| 镇安县| 八宿县| 阳西县|