MySQL學習筆記 - 髒頁重新整理策略
這種情況要儘量避免,出現這種情況的時候,整個系統就不能再接受更新了,所有更新都將被阻塞
場景2 - 系統記憶體不足
記憶體不足是指InnoDB中的buffer pool的剩餘記憶體不足
buffer pool中的資料頁有三種狀態:
- 還未使用
- 使用後,仍然是乾淨頁
- 使用後,變成髒頁
資料頁從磁碟讀入記憶體時,需要向buffer_pool申請一個數據頁 ,buffer_pool會根據LRU演算法 淘汰一個數據頁,如果淘汰的資料頁是髒頁,那麼會先將髒頁資料重新整理到磁碟中,然後才複用資料頁;如果一個查詢要淘汰掉的髒頁太多了,會導致查詢的響應時間變長
- InnoDB從磁碟中載入資料的時候,是以資料頁作為單位的,預設資料頁大小為16K ,通過引數innodb_page_size 可以設定資料頁的大小(從MySQL5.6開始可以通過這個引數調整,但是5.6以前,需要修改原始碼中的UNIV_PAGE_SIZE相關值)
- buffer_pool中的LRU演算法是改進後的URL演算法,目的是為了InnoDB載入冷資料的同時,可以保持buffer_pool的記憶體命中率
- buffer_pool是InnnoDB的緩衝池,裡面包含了各種buffer,例如change_buffer、join_buffer等等