日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql innodb flus_MySQL参数解析innodb_flush_neighbors

發(fā)布時間:2024/9/19 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql innodb flus_MySQL参数解析innodb_flush_neighbors 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

取值范圍:0,1,2

默認值:5.7版本為1, 8.0版本為0

含義:

設置為0時,表示刷臟頁時不刷其附近的臟頁。

設置為1時,表示刷臟頁時連帶其附近毗連的臟頁一起刷掉。

設置為2時,表示刷臟頁時連帶其附近區(qū)域的臟頁一起刷掉。1與2的區(qū)別是2刷的區(qū)域更大一些。

如果MySQL服務器磁盤是傳統(tǒng)的HDD存儲設備,打開該參數,能夠減少I/O磁盤尋道的開銷,提高性能,而對于SSD設備,尋道時間的性能影響很小,關閉該參數,反而能夠分散寫操作,提高數據庫性能。由于SSD設備的普及,MySQL 8.0 將該參數的默認值由1調整為0。

innodb_flush_neighbors參數源碼分析:

源碼版本:5.7.19

在源碼中,innodb_flush_neighbors 參數對應的變量為srv_flush_neighbors,這是一個全局變量,默認值為1,如下:

ulong srv_flush_neighbors = 1;

整個代碼中,用到變量 srv_flush_neighbors 的地方只有一個,那就是函數 buf_flush_try_neighbors(),該函數位于源碼文件:storage/innobase/buf/buf0flu.cc

buf_flush_try_neighbors() 函數主要邏輯,如下:

static ulint buf_flush_try_neighbors(

const page_id_t&??page_id,

buf_flush_t???????flush_type,

ulint?????????????n_flushed,

ulint?????????????n_to_flush)

{

if (UT_LIST_GET_LEN(buf_pool->LRU) < BUF_LRU_OLD_MIN_LEN

|| srv_flush_neighbors == 0) {

// [low, high] 區(qū)間不包含鄰近的頁面

low = page_id.page_no();

high = page_id.page_no() + 1;

}else{

// [low, high] 區(qū)間包含鄰近的頁面

low = (page_id.page_no() / buf_flush_area) * buf_flush_area;

high = (page_id.page_no() / buf_flush_area + 1) * buf_flush_area;

if (srv_flush_neighbors == 1) {

...

// 根據 [low, high] 區(qū)間內的頁是否可以刷盤,來進一步縮小 [low, high] 區(qū)間

}

}

...

// 根據 [low, high] 區(qū)間進行臟頁刷盤

}

buf_flush_try_neighbors() 函數根據 [low, high] 區(qū)間來刷臟頁。

當 srv_flush_neighbors 為 0時, [low, high] 只包含一個頁面。

當 srv_flush_neighbors 為 1時, [low, high] 包含鄰近的頁面,頁面數小于等于變量值buf_flush_area。

當 srv_flush_neighbors 為 2時, [low, high] 包含鄰近的頁面,頁面數等于變量值buf_flush_area。

總結

以上是生活随笔為你收集整理的mysql innodb flus_MySQL参数解析innodb_flush_neighbors的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。