當前位置:
首頁 > 知識 > InnoDB 存儲引擎體系架構

InnoDB 存儲引擎體系架構

首先以一張圖簡單展示 InnoDB 的存儲引擎的體系架構.從圖中可見, InnoDB 存儲引擎有多個內存塊,這些內存塊組成了一個大的內存池,主要負責如下工作:


維護所有進程/線程需要訪問的多個內部數據結構


緩存磁碟上的數據, 方便快速讀取, 同時在對磁碟文件修改之前進行緩存

重做日誌(redo log)緩衝

InnoDB 存儲引擎體系架構



後台線程的主要作用是負責刷新內存池中的數據,保證緩衝池中的內存緩存的是最新數據;將已修改數據文件刷新到磁碟文件;保證資料庫發生異常時 InnoDB 能恢復到正常運行 的狀態

後台線程


InnoDB 使用的是多線程模型, 其後台有多個不同的線程負責處理不同的任務


1. Master Thread


這是最核心的一個線程,主要負責將緩衝池中的數據非同步刷新到磁碟,保證數據的一致性,包括贓頁的刷新、合并插入緩衝、UNDO 頁的回收等.


2. IO Thread

InnoDB 存儲引擎體系架構



可以看到, InnoDB 共有10個 IO Thread, 分別是 4個 write、4個 read、1個 insert buffer和1個 log thread.


3. Perge Thread


事物被提交之後, undo log 可能不再需要,因此需要 Purge Thread 來回收已經使用比分配的 undo頁. InnoDB 支持多個 Purge Thread, 這樣做可以加快 undo 頁的回收

InnoDB 引擎默認設置為4個 Purge Thread:


4. Page Cleaner Thread


Page Cleaner Thread 是新引入的,其作用是將之前版本中臟頁的刷新操作都放入單獨的線程中來完成,這樣減輕了 Master Thread 的工作及對於用戶查詢線程的阻塞


內存

1. 緩衝池


InnoDB 存儲引擎是基於磁碟存儲的,其中的記錄按照頁的方式進行管理,由於 CPU 速度和磁碟速度之間的鴻溝, InnoDB 引擎使用緩衝池技術來提高資料庫的整體性能.


緩衝池簡單來說就是一塊內存區域.在資料庫中進行讀取頁的操作,首先將從磁碟讀到的頁存放在緩衝池中,下一次讀取相同的頁時,首先判斷該頁是不是在緩衝池中,若在,稱該頁在緩衝池中被命中,直接讀取該頁.否則,讀取磁碟上的頁.


對於資料庫中頁的修改操作,首先修改在緩衝池中頁,然後再以一定的頻率刷新到磁碟,並不是每次頁發生改變就刷新回磁碟.


緩衝池的大小直接影響資料庫的整體性能,對於 InnoDB 存儲引擎而言,緩衝池配置通過參數 來設置. 下面顯示本機虛擬機上一台 MySQL 資料庫配置:


緩衝池中緩存的數據頁類型有:索引頁、數據頁、 undo 頁、插入緩衝、自適應哈希索引、 InnoDB 的鎖信息、數據字典信息等.索引頁和數據頁占緩衝池的很大一部分.


下圖顯示 InnoDB 存儲引擎總內存的結構情況.

InnoDB 存儲引擎體系架構



2. 重做日誌緩衝


InnoDB 存儲引擎先將重做日誌信息放入這個緩衝區,然後以一定頻率將其刷新到重做日誌文件.重做日誌文件一般不需要設置得很大,因為在下列三種情況下重做日誌緩衝中的內容會刷新到磁碟的重做日誌文件中.


Master Thread 每一秒將重做日誌緩衝刷新到重做日誌文件


每個事物提交時會將重做日誌緩衝刷新到重做日誌文件


當重做日誌緩衝剩餘空間小於1/2時,重做日誌緩衝刷新到重做日誌文件


3. 額外的內存池


在 InnoDB 存儲引擎中, 對一些數據結構本身的內存進行分配時,需要從額外的內存池中進行申請.例如,分配了緩衝池,但是每個緩衝池中的幀緩衝還有對應的緩衝控制對象,這些對象記錄以一些諸如 LRU, 鎖,等待等信息,而這個對象的內存需要從額外的內存池中申請.


來源:segmentfault


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序源 的精彩文章:

TAG:程序源 |

您可能感興趣

Unity引擎現已支持NS主機的Labo VR硬體系統
Jmeter體系架構分析
通過區塊鏈構建分散式信用數據體系,Distributed Credit Chain打造去中心化的金融生態系統
TCP/IP協議體系結構
體系解析:Liquid與FTM所有體系揭秘
國際清算銀行(BIS)總裁Agustin Carstens:要防止數字貨幣成為現行金融體系「寄生蟲」
RISC-V證明自建獨立於Wintel、AA的技術體系並非死路一條
Cohda Wireless推出硬體系統MK6C EVK 用於C-V2X通信測試和評估應用
Maxim TTS 部常務董事Anders Reisch談高效技術服務體系
微軟推出自主版本Linux,構建物聯網Azure Sphere體系
DxOMark推出Selfie前置攝像頭評測體系
RoboSense聯手地平線、菜鳥等合作夥伴發布Smart Sensor System戰略體系
MySQL-體系結構簡介
這是OpenAI都害怕的體系?淺談DOTA2裡面的分身系英雄
將質量管理體系融入造車的每一環,探訪蔚來NIO Quality體系
評測|HPE Nimble AF全快閃記憶體系列,詮釋真正的高端存儲
Azzedine Ala?a 的反時裝體系啟示錄
全系SUV齊亮相 詮釋Jeep4X4智能科技體系
「我想和 Kanye West 一樣自音樂起建立一套體系」| 專訪英國 R&B 歌手 Miink
整個MacBook產品體系的入門之作