缓冲池Buffer Pool
首先,InnnoDB 的數(shù)據(jù)都是放在磁盤上的,InnoDB 操作數(shù)據(jù)有一個(gè)最小的邏輯單位,叫做頁(yè)(索引頁(yè)和數(shù)據(jù)頁(yè))。我們對(duì)于數(shù)據(jù)的操作,不是每次都直接操作磁盤,因?yàn)榇疟P的速度太慢了。InnoDB 使用了一種緩沖池的技術(shù),也就是把磁盤讀到的頁(yè)放到一塊內(nèi)存區(qū)域里面。這個(gè)內(nèi)存區(qū)域就叫Buffer Pool。
下一次讀取相同的頁(yè),先判斷是不是在緩沖池里面,如果是,就直接讀取,不用再次訪問磁盤。
修改數(shù)據(jù)的時(shí)候,先修改緩沖池里面的頁(yè)。內(nèi)存的數(shù)據(jù)頁(yè)和磁盤數(shù)據(jù)不一致的時(shí)候,我們把它叫做臟頁(yè)。InnoDB 里面有專門的后臺(tái)線程把Buffer Pool 的數(shù)據(jù)寫入到磁盤,每隔一段時(shí)間就一次性地把多個(gè)修改寫入磁盤,這個(gè)動(dòng)作就叫做刷臟
Buffer Pool 是InnoDB 里面非常重要的一個(gè)結(jié)構(gòu),它的內(nèi)部又分成幾塊區(qū)域。這里我們趁機(jī)到官網(wǎng)來(lái)認(rèn)識(shí)一下InnoDB 的內(nèi)存結(jié)構(gòu)和磁盤結(jié)構(gòu)。
?
總結(jié)
以上是生活随笔為你收集整理的缓冲池Buffer Pool的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一条更新SQL 是如何执行的?
- 下一篇: 索引是什么?