<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
對於各種使用者資料、索引資料等各種資料都是需要持久化儲存到磁碟,然後以“頁”為單位進行讀寫。
相對於直接讀寫快取,磁碟IO的成本相當高昂。
對於讀取的頁面資料,並不是使用完就釋放掉,而是放到緩衝區,因為下一次操作有可能還需要讀區該頁面。
對於修改過的頁面資料,也不是馬上同步到磁碟,也是放到緩衝區,因為下一次有可能還會修改該頁面的資料。
但是快取的空間是有大小限制的,不可能無限擴充。
對於緩衝區的資料,需要有合理的頁面淘汰演演算法,將未來使用概率較小的頁面釋放或者同步到磁碟,
給當下需要存放到快取的頁面騰出位置。
暫存器:CPU暫存指令、資料的小型儲存區域,速度快,容量小。
CPU快取記憶體(CPU Cache):用於減少CPU存取記憶體所需平均時間的部件。
記憶體:用於暫時存放CPU中的運算資料,以及與硬碟等外部記憶體交換的資料。
硬碟:分為固態硬碟(SSD)和機械硬碟(HHD),是非易失性記憶體。
下圖是各種快取器的價格和效能差距,
從下圖可以看出,SSD的隨機存取延時在微妙級別,而記憶體的的隨機存取延時在納秒級別,記憶體比SSD大概快1000倍左右。
一個緩衝池(緩衝池)是向作業系統申請的一塊記憶體空間,這塊記憶體空間由多個chunk組成,每個chunk均包含多個控制塊和對應的緩衝頁。
chunk是向作業系統申請記憶體的最小單位,緩衝頁大小與InnoDB表空間使用的頁面大小一致。
Buffer Pool的示意圖如下
每一個控制塊都對應一個緩衝頁,控制塊包含該緩衝頁所屬的表空間編號、頁號、在Buffer Pool中的地址、連結串列結點資訊等等。
當剛讀取一個頁面時,需要知道緩衝區有哪些空閒頁面,當修改過後緩衝頁後,需要記錄該緩衝頁需要持久化到磁碟,
當緩衝區沒有空閒頁面了,需要有頁面淘汰演演算法來將緩衝頁移出緩衝區,
以上涉及到Free連結串列、Flush連結串列、LRU連結串列,下面注意說明。
Free連結串列是由空閒的緩衝頁對應的控制塊組成的連結串列,通過Free連結串列就獲取到空閒的緩衝頁及其在緩衝區中的地址。
每當需要從磁碟載入一個頁面到緩衝區時,從該Free連結串列取出一個控制塊結點,從Free連結串列移除該結點,並加入LRU連結串列。
如果這個緩衝區頁面被修改過,那麼會被加入到Flush連結串列中。
如果一修改緩衝頁的資料之後就重新整理到磁碟,這種頻繁的IO操作勢必影響程式等整體效能。
試想一下,先後修改1000次同一緩衝區頁面的一位元組資料,每次修改都重新整理到磁碟,與修改1000次後再將最終結果重新整理磁碟,節省了999次重新整理磁碟的操作。
因此,當頁面的資料被修改之後,需要將改頁面放到Flush連結串列,排隊等候寫入磁碟。
這既可以減少在使用者程序中重新整理磁碟的次數,也從整體上減少了磁碟IO到次數。
記憶體空間有限,不可能將所有資料都快取在記憶體當中,因此需要有一定的演演算法將記憶體中頁面淘汰掉(修改過的頁面持久化到磁碟)。
LRU(Least Recently Used)連結串列主要用於輔助實現記憶體頁面淘汰,故名思義,最先淘汰的是最近最少使用的緩衝頁。
LRU連結串列的結果如下圖所示
將LRU連結串列分為young區域和old區域。
對於初次載入到緩衝區的頁面,會放到LRU連結串列old區域的頭部,這主要避免了預讀的頁面被放到了LRU連結串列的首部。
當第二次存取緩衝頁且時間間隔超過innodb_old_blocks_time(預設1s)時,才將該頁面移動到LRU連結串列的首部。
進一步,為了避免頻繁的移動連結串列結點,當某個緩衝頁已經在young區域的前3/4時,則不會移動該結點到首部。
如何定位頁面是否被緩衝呢?
表空間號和頁號可以唯一識別緩衝頁,因此InnoDB引擎建立了以表空間號+頁號為key,以緩衝頁控制塊地址為value的雜湊表,
從而快速判斷頁面是否被緩衝,快速定位到資料所在地址。
到此這篇關於MySQL InnoDB引擎的快取特性詳解的文章就介紹到這了,更多相關MySQL InnoDB 快取特性內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45