InnoDB
在背景執行某些任務,包括從緩衝池刷新髒頁。髒頁是指已修改但尚未寫入磁碟上的資料檔案的頁面。
緩衝池刷新由頁面清理器執行緒執行。頁面清理器執行緒的數目由 innodb_page_cleaners
變數控制,其預設值設定為與 innodb_buffer_pool_instances
相同的值。
當髒頁的百分比達到 innodb_max_dirty_pages_pct_lwm
變數定義的低水位標記值時,就會啟動緩衝池刷新。預設的低水位標記是緩衝池頁面的 10%。innodb_max_dirty_pages_pct_lwm
值為 0 時,會停用此早期刷新行為。
innodb_max_dirty_pages_pct_lwm
臨界值的目的是控制緩衝池中的髒頁百分比,並防止髒頁數量達到 innodb_max_dirty_pages_pct
變數定義的臨界值,其預設值為 90。如果緩衝池中的髒頁百分比達到 innodb_max_dirty_pages_pct
臨界值,InnoDB
會積極地刷新緩衝池頁面。
設定 innodb_max_dirty_pages_pct_lwm
時,該值應始終低於 innodb_max_dirty_pages_pct
值。
其他變數允許微調緩衝池刷新行為
innodb_flush_neighbors
變數定義是否從緩衝池刷新頁面也會刷新同一個範圍中的其他髒頁。預設設定 0 會停用
innodb_flush_neighbors
。不會刷新同一個範圍中的髒頁。建議非旋轉式儲存 (SSD) 裝置使用此設定,因為尋找時間不是重要因素。設定為 1 會刷新同一個範圍中的連續髒頁。
設定為 2 會刷新同一個範圍中的髒頁。
當表格資料儲存在傳統 HDD 儲存裝置上時,在一個操作中刷新相鄰頁面會減少 I/O 負擔 (主要針對磁碟尋找操作),與在不同時間刷新個別頁面相比。對於儲存在 SSD 上的表格資料,尋找時間不是重要因素,您可以停用此設定以分散寫入操作。