mysql 查看 脏页_MySQL:刷脏页
1. 臟頁,干凈頁
當內存數據頁和磁盤數據頁上的內容不一致時,我們稱這個內存頁為臟頁;
內存數據寫入磁盤后,內存頁上的數據和磁盤頁上的數據就一致了,我們稱這個內存頁為干凈頁。
2. 刷臟頁的時機
2.1 redo log
redo? log 是循環寫的,當redo log 寫滿了,即 write pos 追上了? checkpoint 時,此時沒有空間記錄 redo log,就需要將 checkpoint 向前推進,推進的這部分日志對應的臟頁就需要刷入磁盤。
此時所有的更新全部阻塞,此時寫性能跌為0,必須等待刷一部分臟頁后才能繼續更新,這種情況要盡量避免;
2.2 系統內存
當系統內存不足時,就需要將一部分數據頁淘汰掉,如果淘汰的是臟頁,就需要先將臟頁刷入磁盤。
當淘汰的臟頁過多時,會導致查詢的響應時間變長;
2.3 MySQL認為空閑的時間
不存在性能問題;
2.4 MySQL正常關閉之前,會把內存中所有的臟頁刷入磁盤
不存在性能問題;
3. 刷臟頁的控制策略
3.1 正確服務器的IO能力
innodb_io_capacity參數表示機器的磁盤能力,根據機器能力合理設置該參數的值;
3.2 刷臟頁的速度
InnoDB的刷盤速度主要參考兩個參數:臟頁比例和redo log 的寫盤速度;
innodb_max_dirty_pages_pct是臟頁比例上限,默認值為75%;
InnoDB根據當前的臟頁比例算出一個值M1;
InnoDB每次寫入redo log 有一個序號,根據當前序號和checkpoint之間的差值算出一個值M2;
之后引擎取M1和M2之間(M1和M2都是0-100之間的數)的較大值除以100乘以innodb_io_capacity,這就是刷臟頁的速度;
3.3 刷臟頁機制
當一個查詢請求執行過程中需要先flush一個臟頁時,如果臟頁的旁邊也是臟頁,此時引擎會將相鄰的臟頁也刷掉,直到下一個數據頁不是臟頁為止;
該機制通過參數 innodb_innodb_flush_neighbors 控制,值為0時表示只刷自己,值為1時則有連坐效果;
總結
以上是生活随笔為你收集整理的mysql 查看 脏页_MySQL:刷脏页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xx通用管理系统(超级好看的界面)jav
- 下一篇: 浏览器缓存问题