MySQL刷脏
MySQL刷臟
臟頁的產生
- 更新數據時,只更新了內存中的數據頁,沒有更新磁盤
- 內存中數據頁和磁盤中數據頁不一致,稱為臟頁
刷臟
- 將內存中數據頁保存至磁盤
- 同時,刪除與此頁相關的redo log,推進check point
為什么要刷臟?
- 內存中的臟頁太多,內存不足(會產生性能問題)
- redo log文件寫滿,需要推進check point(會產生性能問題)
- 系統空閑,提前刷臟,預防上述情況
- MySQL關閉前,保存數據
避免被迫刷臟
- 正確告知InnoDB,服務器的硬盤性能
- 配置合理的臟頁比例上限
- 控制"順便刷臟"策略
服務器IO配置
- 配置項:innodb_io_capacity
- 用來告知服務器的硬盤性能
- 常見IOPS:(I/O per second)
- 7200 rpm SATA,70IOPS
- 10000 rpm FC,125IOPS
- SSD SATA,3000~4000IOPS
配置合理的臟頁比例上限
- 配置項:innodb_max_dirty_pages_pct:磁盤中頁的數量和臟頁數量比值
- 當臟頁比例接近此值,會加速刷臟
- 建議保持默認值75
控制"順便刷臟"策略
- 配置項:innodb_flush_neighbors
- 傳統的磁盤連續讀寫性能最好,盡量刷連續的頁
- SSD建議設為0(8.0已經默認0)
總結
- 上一篇: 【5029】理性和感性哪个对做产品更重要
- 下一篇: sct文件编写与使用