詳解 MySQL的FreeList機制
一、前言
MySQL啟動后,BufferPool就會被初始化,在你沒有執(zhí)行任何查詢操作之前,BufferPool中的緩存頁都是一塊塊空的內(nèi)存,未被使用過也沒有任何數(shù)據(jù)保存在里面。
而且你也知道了通過緩沖頁的描述信息可以直接且唯一的找到它所指向的緩存頁。
那你有沒有想過,我們從磁盤里面讀取出來的 數(shù)據(jù)頁 應(yīng)該放到那個緩沖頁中去呢?
這個問題就引出了Free List。
二、Free List
其實Free List是Buffer Pool中基于緩存頁描述信息 組織起來的雙向鏈表。換言之,F(xiàn)ree List中的每一個結(jié)點都是緩存頁對應(yīng)的描述信息。并且通過描述信息可以找到指定的緩存頁(緩存頁)
InnoDB設(shè)計Free List的初衷就是為了解決上面說的問題。
如果這個緩存頁中沒有存儲任何數(shù)據(jù),那么它對應(yīng)的描述信息就會被維護進Free List中。這時當你想把從磁盤中讀取出一個數(shù)據(jù)頁放入緩存頁中的話,就得先從Free List中找一個節(jié)點(Free List中的所有節(jié)點都會指向一個從未被使用過的緩存頁),那接著就可以把你讀取出來的這個數(shù)據(jù)頁放入到該節(jié)點指向的緩存頁中。
相應(yīng)的:當數(shù)據(jù)頁中被放入數(shù)據(jù)之后。它對應(yīng)的描述信息塊會被從Free List中移出。
三、如何判斷數(shù)據(jù)頁有沒有在緩存中?
你會不會納悶MySQL怎么知道剛讀取出來的這個數(shù)據(jù)頁有沒有在緩存頁中呢?
這個功能的實現(xiàn)依托于另一個數(shù)據(jù)結(jié)構(gòu):hash table
key = 表空間號+數(shù)據(jù)頁號
value = 緩存頁地址
如果存在于hash table中,那就說明該數(shù)據(jù)頁已經(jīng)存在于Buffer Pool中了,優(yōu)先使用Buffer Pool中的緩存頁。相信你肯定能想到為啥優(yōu)先使用Buffer Pool中的緩存頁吧!首先免去了磁盤的隨機IO,其次緩存頁中的數(shù)據(jù)可能是已經(jīng)被修改了的臟數(shù)據(jù)。
以上就是詳解 MySQL的FreeList機制的詳細內(nèi)容,更多關(guān)于MySQL FreeList機制的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
mysql/Java服務(wù)端對emoji的支持與問題解決方法詳解
這篇文章主要介紹了mysql/Java服務(wù)端對emoji的支持與問題解決方法,結(jié)合實例形式分析了mysql/Java服務(wù)端對emoji字符集存儲及支持問題解決方法,需要的朋友可以參考下2019-10-10MySQL 使用 ORDER BY 排序和 DELETE 刪
這篇文章主要介紹了MySQL 使用 ORDER BY 排序和 DELETE 刪除記錄的操作過程,即數(shù)據(jù)庫查詢與數(shù)據(jù)操作,本文通過示例代碼給大家介紹的非常詳細,需要的朋友參考下吧2023-11-11MySQL數(shù)據(jù)庫壓縮版本安裝與配置詳細教程
今天教各位小伙伴怎么安裝及配置Mysql數(shù)據(jù)庫,文中有非常詳細的圖文解說及代碼示例,對剛?cè)腴Tmysql的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05MySQL 自動備份與數(shù)據(jù)庫被破壞后的恢復(fù)方法
當數(shù)據(jù)庫服務(wù)器建立好以后,我們首先要做的不是考慮要在這個支持數(shù)據(jù)庫的服務(wù)器運行哪些受MySQL提攜的程序,而是當數(shù)據(jù)庫遭到破壞后,怎樣安然恢復(fù)到最后一次正常的狀態(tài),使得數(shù)據(jù)的損失達到最小。2010-03-03MySQL數(shù)據(jù)庫安裝后服務(wù)無法啟動的解決辦法
作為一名程序猿,必不可少的便是和mysql打交道,那當mysql故障,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫安裝后服務(wù)無法啟動的解決辦法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-06-06MySQL Threads_running飆升與慢查詢的相關(guān)問題解決
這篇文章主要介紹了MySQL Threads_running飆升與慢查詢的問題解決,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下2021-05-05