Innodb關鍵特性之重新整理鄰接頁

StevenBeijing發表於2020-08-04

1、工作原理

  當重新整理一個髒頁時,innodb儲存引擎會檢測該頁所在區(extent)的所有頁,如果是髒頁,那麼一起進行重新整理。這樣做的好處顯而易見,通過AIO可以將多個IO寫入操作合併為一個IO操作,增大寫入量,減少了物理寫IO,故該工作機制在傳統機械磁碟下有著顯著的優勢。

  1、在寫入次數基本不增加的情況下,增加了寫入的量;

  2、加速了髒頁的回收;

  3、充分利用double write每次1M寫入的特徵;

  4、這個功能開啟以後會發現iostat裡面的wrqm(合併寫)這個值會比較高;

2、問題考慮

  1、是不是可能將不怎麼髒的頁進行了寫入,而該頁之後又會很快變成髒頁?

  2、固態硬碟有著較高的 IOPS,是否還需要這個特性?

  為此,InnoDB 儲存引擎從 1.2.x 版本開始提供了引數 innodb_flush_neighbors,用來控制是否啟用該特性。對於傳統機械硬碟建議啟用該特性,而對於固態硬碟有著超高 IOPS 效能的磁碟,則建議將該引數設定為 0、即關閉此特性。

3、引數控制 :innodb_flush_neighbors

mysql>show variables like 'innodb_flush_neighbors';
+-------------------------+-----------------+
| Variable_name           | Value           |
+-------------------------+-----------------+
| innodb_flush_neighbors  | 1               |
+-------------------------+-----------------+

       1,表示開啟了重新整理鄰接頁的功能,順帶著重新整理在 buffer pool 中位於磁碟上相同的 extend 區的相鄰的髒頁。

  0,表示關閉重新整理鄰接頁

  2 ,表示重新整理在 buffer pool 中位於磁碟上相同的 extend 區的髒頁。

4、Flush neighbor page的影響

  1、 對於insert頻繁的系統,這個功能比較適合

  2、 對於update頻繁的系統,這個功能可能會帶來一些副作用

    1、update順帶著重新整理其他頁;

    2、對於update頻繁的表,這些頁馬上就髒了,白白浪費寫負載。







來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30135314/viewspace-2709228/,如需轉載,請註明出處,否則將追究法律責任。

相關文章