MySQL checkpoint

      網友投稿 1180 2025-04-02

      一、Mysql checkpoint


      1、checkpoint的目的

      1)縮短數據庫的恢復時間

      2)buffer pool空間不夠用時,將臟頁刷新到磁盤

      3)redolog不可用時,刷新臟頁

      2、檢查點分類

      1)sharp checkpoint:完全檢查點,數據庫正常關閉時,會觸發把所有的臟頁都寫入到磁盤上(這時候logfile的日志就沒用了,臟頁已經寫到磁盤上了)。

      MySQL checkpoint

      完全檢查點,發生在數據庫正常關閉的時候。

      在數據庫在運行時不會使用sharp checkpoint,在引擎內部使用fuzzy checkpoint,即只刷新一部分臟頁,而不是刷新所有的臟頁回磁盤。

      2)fuzzy checkpoint:模糊檢查點,部分頁寫入磁盤。

      發生在數據庫正常運行期間。

      模糊檢查點,不是sharp的就是模糊檢查點(4種):page clean thread checkpoint、flush_lru_list checkpoint、async/sync flush checkpoint、dirty page too much checkpoint。

      3、Master Thread checkpoint

      差不多以每秒或每十秒的速度從緩沖池的臟頁列表中刷新一定比例的頁回磁盤,這個過程是異步的,不會阻塞用戶查詢。

      1、周期性,讀取flush list,找到臟頁,寫入磁盤

      2、寫入的量比較小

      3、異步,不影響業務

      4、通過capacity能力告知進行刷盤控制

      通過innodb的io能力告知控制對flush list刷臟頁數量,io_capacity越高,每次刷盤寫入臟頁數越多;

      如果臟頁數量過多,刷盤速度很慢,在io能力允許的情況下,調高innodb_io_capacity值,讓多刷臟頁。

      innodb_io_capacity = 200

      innodb_io_capacity_max = 2000

      4、flush_lru_list checkpoint:保證可用的空閑頁

      Mysql會保證,保證里面有多少可用的空閑頁,如果沒有100個可用空閑頁,那么innodb會將lru列表尾端的頁移除,如果這些頁中有臟頁,那么需要進行checkpoint。

      線程page cleaner中進行,用戶可以通過參數innodb_lru_scan_depth控制lru列表中可用頁的數量,默認是1024。

      此情況下觸發,默認掃描1024個lru冷端數據頁,將臟頁寫入磁盤(有10個就刷10,有100個就刷100個……)

      innodb_lru_scan_depth | 1024

      5、async/sync flush checkpoint

      log file快滿了,會批量的觸發數據頁回寫,這個事件觸發的時候又分為異步和同步,不可被覆蓋的redolog占log file的比值:75%--->異步、90%--->同步。

      當這兩個事件中的任何一個發生的時候,都會記錄到errlog中,一旦errlog出現這種日志提示,一定需要加大logfile。

      Async/Sync Flush Checkpoint是為了保證重做日志的循環使用的可用性。刷新操作放入到了單獨的Page Cleaner Thread中,故不會阻塞用戶查詢線程。

      6、dirty page too much checkpoint

      很明顯,臟頁太多檢查點,為了保證buffer pool的空間可用性的一個檢查點。

      1)臟頁監控,關注點

      show global status like 'Innodb_buffer_pool_pages%t%'

      show global status like '%wait_free';

      Innodb_buffer_pool_pages_dirty/Innodb_buffer_pool_pages_total:表示臟頁在buffer 的占比

      Innodb_buffer_pool_wait_free:如果>0,說明出現性能負載,buffer pool中沒有干凈可用塊

      2)臟頁控制參數

      | innodb_max_dirty_pages_pct???? | 75.000000 |

      | innodb_max_dirty_pages_pct_lwm | 0.000000? |

      默認是臟頁占比75%的時候,就會觸發刷盤,將臟頁寫入磁盤,騰出內存空間。建議不調,調太低的話,io壓力就會很大,但是崩潰恢復就很快;

      lwm:low water mark低水位線,刷盤到該低水位線就不寫臟頁了,0也就是不限制。

      注意:上面在調整的時候,要關注系統的寫性能iostat -x。

      二、

      通過show engine innodb status\G解釋一下LOG相關的四行參數的值:

      Log sequence number 143942609---LSN:日志序列號(1)

      //字節,日志生成的最新位置,最新位置出現在log buffer中

      Log flushed up to?? 143942609---(2)

      //字節,日志已經寫入到log file的位置,1-2=log buffer日志量,最好是<=1M

      Pages flushed up to 143942609---(3)

      //字節,臟頁的數量(日志字節數來衡量),2-3=臟頁的數量(日志字節為單位)

      Last checkpoint at? 143942600---(4)

      //字節,共享表空間上的日志記錄點,最后一次檢查點,及崩潰恢復時指定的起點,3-4就是崩潰恢復多跑的日志,值越大說明需要提升checkpoint的跟進速度

      MySQL 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格數據分析功能使用教程
      下一篇:Excel按字符數量排序
      相關文章
      国产精品亚洲玖玖玖在线观看| 亚洲日本VA中文字幕久久道具| 亚洲综合色自拍一区| 亚洲成av人片在线天堂无| 亚洲AV无码久久精品蜜桃| 亚洲精品久久无码| 2017亚洲男人天堂一| 亚洲国产精品综合一区在线| 亚洲成a人片77777群色| 亚洲日产2021三区在线| 亚洲国产亚洲片在线观看播放| 亚洲视频在线一区二区三区| 亚洲精品中文字幕无乱码| 亚洲白嫩在线观看| 亚洲人成网站在线观看播放动漫| 亚洲妓女综合网99| 亚洲一区电影在线观看| 亚洲va久久久久| 亚洲免费综合色在线视频| 亚洲AV永久无码精品网站在线观看| 亚洲一卡一卡二新区无人区| 亚洲乱码无人区卡1卡2卡3| 日韩成人精品日本亚洲| 亚洲av无码国产精品色在线看不卡| 含羞草国产亚洲精品岁国产精品| 久久精品亚洲日本波多野结衣| 国产成人综合亚洲绿色| 亚洲一区二区三区无码影院| 亚洲无av在线中文字幕| 亚洲成人动漫在线| 久久久婷婷五月亚洲97号色| 亚洲国产午夜精品理论片| 久久夜色精品国产噜噜亚洲a| 亚洲AV无码专区在线电影成人| 在线视频亚洲一区| 国产亚洲精午夜久久久久久| 亚洲AV无码精品色午夜果冻不卡 | 中文字幕精品亚洲无线码二区| 亚洲国产另类久久久精品黑人| 亚洲国产精品成人久久蜜臀| 久久精品国产亚洲精品|