最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql數(shù)據(jù)庫緩沖池詳解(Buffer pool)

 更新時間:2024年12月25日 10:11:49   作者:明礬java  
InnoDB存儲引擎通過BufferPool緩存數(shù)據(jù)頁和索引頁,減少磁盤I/O,提升查詢性能,BufferPool通過預(yù)讀和checkpoint機制優(yōu)化I/O操作和數(shù)據(jù)持久化

Buffer pool的作用

InnoDB 存儲引擎是以頁為單位來管理存儲空間的,我們進行的增刪改查操作其實本質(zhì)上都是在訪問頁面(包括讀頁面、寫頁面、創(chuàng)建新頁面等操作)。

而磁盤 I/O 需要消耗的時間很多,而在內(nèi)存中進行操作,效率則會高很多,為了能讓數(shù)據(jù)表或者索引中的數(shù)據(jù)隨時被我們所用,DBMS 會申請占用內(nèi)存來作為數(shù)據(jù)緩沖池 ,在真正訪問頁面之前,需要把在磁盤上的頁緩存到內(nèi)存中的 Buffer Pool 之后才可以訪問。

這樣做的好處是可以讓磁盤活動最小化,從而 減少與磁盤直接進行 I/O 的時間。

要知道,這種策略對提升 SQL 語句的查詢性能來說至關(guān)重要。

如果索引的數(shù)據(jù)在緩沖池里,那么訪問的成本就會降低很多。

即申請一塊內(nèi)存提前從磁盤中讀取數(shù)據(jù)到內(nèi)存,后續(xù)mysql訪問數(shù)據(jù)都從Buffer pool 這個緩沖池里訪問,減少了磁盤IO的次數(shù),提高查詢效率。

緩沖池(Buffer Pool)

在 InnoDB 存儲引擎中有一部分數(shù)據(jù)會放到內(nèi)存中,緩沖池則占了這部分內(nèi)存的大部分,它用來存儲各種數(shù)據(jù)的緩存,由下圖可以看到 InnoDB 緩沖池包括了數(shù)據(jù)頁、索引頁、插入緩沖、鎖信息、自適應(yīng) Hash 和數(shù)據(jù)字典信息等。

緩存原則

位置 * 頻次”這個原則,可以幫我們對 I/O 訪問效率進行優(yōu)化。

首先,位置決定效率,提供緩沖池就是為了在內(nèi)存中可以直接訪問數(shù)據(jù)。

其次,頻次決定優(yōu)先級順序。因為緩沖池的大小是有限的,比如磁盤有 200G,但是內(nèi)存只有 16G,緩沖池大小只有 1G,就無法將所有數(shù)據(jù)都加載到緩沖池里,這時就涉及到優(yōu)先級順序,會優(yōu)先對使用頻次高的熱數(shù)據(jù)進行加載。

緩沖池的預(yù)讀特性

緩沖池的作用就是提升 I/O 效率,而我們進行讀取數(shù)據(jù)的時候存在一個“局部性原理”,也就是說我們使用了一些數(shù)據(jù),大概率還會使用它周圍的一些數(shù)據(jù),因此采用“預(yù)讀”的機制提前加載,可以減少未來可能的磁盤 I/O 操作。

緩沖池如何讀取數(shù)據(jù)

緩沖池管理器會盡量將經(jīng)常使用的數(shù)據(jù)保存起來,在數(shù)據(jù)庫進行頁面讀操作的時候,首先會判斷該頁面 是否在緩沖池中,如果存在就直接讀取,如果不存在,就會通過內(nèi)存或磁盤將頁面存放到緩沖池中再進行讀取。

緩存在數(shù)據(jù)庫中的結(jié)構(gòu)和作用如下圖所示:

mysql通過存儲引擎讀取到緩沖池,再從緩沖池讀取數(shù)據(jù),緩沖池就是媒介。

如果我們執(zhí)行 SQL 語句的時候更新了緩存池中的數(shù)據(jù),那么這些數(shù)據(jù)會馬上同步到磁盤上嗎?

實際上,當我們對數(shù)據(jù)庫中的記錄進行修改的時候,首先會修改緩沖池中頁里面的記錄信息,然后數(shù)據(jù)庫會以一定的頻率刷新到磁盤中。注意并不是每次發(fā)生更新操作,都會立即進行磁盤回寫。

緩沖池會采用一種叫做checkpoint的機制 將數(shù)據(jù)回寫到磁盤上,這樣做的好處就是提升了數(shù)據(jù)庫的整體性能。

比如,當緩沖池不夠用時,需要釋放掉一些不常用的頁,此時就可以強行采用checkpoint的方式,將不常用的臟頁回寫到磁盤上,然后再從緩存池中將這些頁釋放掉。

這里的臟頁 (dirty page) 指的是緩沖池中被修改過的頁,與磁盤上的數(shù)據(jù)頁不一致。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL多表關(guān)聯(lián)查詢相關(guān)練習題

    MySQL多表關(guān)聯(lián)查詢相關(guān)練習題

    這篇文章主要給大家介紹了關(guān)于MySQL多表關(guān)聯(lián)查詢的相關(guān)資料,在MySQL中JOIN語句是實現(xiàn)多表關(guān)聯(lián)查詢的關(guān)鍵,它可以將多個表格中符合條件的數(shù)據(jù)連接在一起,從而提供一個完整的查詢結(jié)果,需要的朋友可以參考下
    2023-10-10
  • MySQL?UPDATE多表關(guān)聯(lián)更新的實現(xiàn)示例

    MySQL?UPDATE多表關(guān)聯(lián)更新的實現(xiàn)示例

    MySQL可以基于多表查詢更新數(shù)據(jù),本文主要介紹了MySQL?UPDATE多表關(guān)聯(lián)更新的實現(xiàn)示例,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • MySQL權(quán)限異常排查:用戶無法登錄或操作的解決方案

    MySQL權(quán)限異常排查:用戶無法登錄或操作的解決方案

    在日常開發(fā)與運維中,MySQL 權(quán)限問題是最常見、最令人抓狂的小故障之一,本文將系統(tǒng)性地梳理 MySQL 權(quán)限體系的核心機制,深入剖析 用戶無法登錄或執(zhí)行操作的 10+ 種典型場景,并提供 可落地的排查步驟、修復(fù)命令與預(yù)防策略,需要的朋友可以參考下
    2026-02-02
  • MySQL中的視圖特性使用及說明

    MySQL中的視圖特性使用及說明

    視圖是虛擬表,由查詢定義,包含列和行數(shù)據(jù),其與基表數(shù)據(jù)相互影響,修改任一方均會同步變化,創(chuàng)建需唯一命名,不可添加索引或觸發(fā)器,可提升安全性,ORDER BY在視圖中優(yōu)先,但被SELECT中的覆蓋
    2025-10-10
  • 簡單了解mysql存儲字段類型查詢效率

    簡單了解mysql存儲字段類型查詢效率

    這篇文章主要介紹了簡單了解mysql存儲字段類型查詢效率,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Windows下MySQL定時備份腳本的實現(xiàn)

    Windows下MySQL定時備份腳本的實現(xiàn)

    這篇文章主要介紹了Windows下MySQL定時備份腳本的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • MySQL?Community?Server?8.0.29安裝配置方法圖文教程

    MySQL?Community?Server?8.0.29安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了MySQL?Community?Server?8.0.29安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • MySQL數(shù)據(jù)庫的卸載與安裝(Linux?Centos)

    MySQL數(shù)據(jù)庫的卸載與安裝(Linux?Centos)

    如果大家曾經(jīng)安裝過MySQL,現(xiàn)在想要更新MySQL的版本或者因為某些原因?qū)е滦枰匮bMySQL,請記住重裝之前一定要把之前的MySQL版本卸載干凈,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫的卸載與安裝的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • MySQL?分庫分表的項目實踐

    MySQL?分庫分表的項目實踐

    當用戶量級上升,寫請求越來越多,這時需要用到分庫分表,本文就介紹了MySQL?分庫分表的項目實踐,具有一定的參考價值,感興趣的可以了解一下
    2022-04-04
  • Mysql下自動刪除指定時間以前的記錄的操作方法

    Mysql下自動刪除指定時間以前的記錄的操作方法

    這篇文章主要介紹了MySQL下自動刪除指定時間以前的記錄的操作方法,需要的朋友可以參考下
    2018-08-08

最新評論

罗城| 东方市| 商都县| 新宁县| 普定县| 探索| 晋中市| 页游| 肇源县| 平阳县| 永清县| 永福县| 灌阳县| 通渭县| 阜康市| 渝中区| 九江市| 临猗县| 陇西县| 蒙山县| 沂源县| 专栏| 巩义市| 泗洪县| 定西市| 界首市| 阳新县| 涞源县| 定兴县| 洛南县| 施秉县| 湘乡市| 海城市| 平谷区| 朔州市| 耒阳市| 麻阳| 陈巴尔虎旗| 辽宁省| 扎囊县| 玉田县|