12 | 為什么我的MySQL會“抖”一下?

當內存數據頁跟磁盤數據頁內容不一致的時候,我們稱這個內存頁為“臟頁”。內存數據寫入到磁盤后,內存和磁盤上的數據頁的內容就一致了,稱為“干凈頁”

回到文章開頭的問題,你不難想象,平時執(zhí)行很快的更新操作,其實就是在寫內存和日志,而 MySQL 偶爾“抖”一下的那個瞬間,可能就是在刷臟頁(flush)。

問題:一個內存配置為 128GB、innodb_io_capacity 設置為 20000 的大規(guī)格實例,正常會建議你將 redo log 設置成 4 個 1GB 的文件。但如果你在配置的時候不慎將 redo log 設置成了 1 個 100M 的文件,會發(fā)生什么情況呢?又為什么會出現這樣的情況呢?(如果一個高配的機器,redo log 設置太小,會發(fā)生什么情況。)

每次事務提交都要寫 redo log,如果設置太小,很快就會被寫滿,也就是下面這個圖的狀態(tài),這個“環(huán)”將很快被寫滿,write pos 一直追著 CP。


這時候系統不得不停止所有更新,去推進 checkpoint。

這時,你看到的現象就是:磁盤壓力很小,但是數據庫出現間歇性的性能下跌。


感謝極客時間:https://time.geekbang.org/column/article/71806

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容