InnoDB體系架構

2022-09-17 18:36:11 字數 1173 閱讀 5108

reference:

innodb主要包括了記憶體池、後台執行緒以及儲存檔案。

記憶體池又是由多個記憶體塊組成的,主要包括快取磁碟資料、redo log緩衝等;

後台執行緒則包括了master thread、io thread以及purge thread等;

由innodb儲存引擎實現的表的儲存結構檔案一般包括表結構檔案(.frm)、共享表空間檔案(ibdata1)、獨佔表空間檔案(ibd)以及日誌檔案(redo檔案等)等。

如果客戶端從資料庫中讀取資料是直接從磁碟讀取的話,無疑會帶來一定的效能瓶頸,緩衝池的作用就是提高整個資料庫的讀寫效能。

客戶端讀取資料時,如果資料存在於緩衝池中,客戶端就會直接讀取緩衝池中的資料,否則再去磁碟中讀取;對於資料庫中的修改資料,首先是修改在緩衝池中的資料,然後再通過master thread執行緒重新整理到磁碟上。

理論上來說,緩衝池的記憶體越大越好。

緩衝池中不僅快取索引頁和資料頁,還包括了undo頁,插入快取、自適應雜湊索引以及innodb的鎖資訊等等。

innodb允許多個緩衝池例項,從而減少資料庫內部資源的競爭,增強資料庫的併發處理能力。

innodb儲存引擎會先將重做日誌資訊放入到緩衝區中,然後再重新整理到重做日誌檔案中。

master thread 主要負責將緩衝池中的資料非同步重新整理到磁碟中,除此之外還包括插入快取、undo頁的**等

io thread是負責讀寫io的執行緒

purge thread主要用於**事務已經提交了的undo log

pager cleaner thread是新引入的乙個用於協助master thread重新整理髒頁到磁碟的執行緒,它可以減輕master thread的工作壓力,減少阻塞

在mysql中建立一張表都會生成乙個.frm檔案,該檔案是用來儲存每個表的元資料資訊的,主要包含表結構定義。

在innodb中,儲存資料都是按表空間進行存放的,預設為共享表空間,儲存的檔案即為共享表空間檔案(ibdata1)。若設定了引數innodb_file_per_table為1,則會將儲存的資料、索引等資訊單獨儲存在乙個獨佔表空間,因此也會產生乙個獨佔表空間檔案(ibd)。

而日誌檔案則主要是重做日誌檔案,主要記錄事務產生的重做日誌,保證事務的一致性。

innodb 體系架構

innodb儲存引擎的體系架構,可簡單劃分成三層 資料檔案 磁碟上的資料檔案 記憶體池 快取磁碟上的資料,方便讀取,同時在對磁碟檔案資料修改之前在這裡快取,然後按一定規重新整理到磁碟 後台執行緒 主要負責重新整理記憶體池中的資料,保證記憶體池中都是最近資料。同時將記憶體中修改的資料重新整理到磁碟 磁...

InnoDB體系架構(三)Checkpoint技術

checkpoint技術 前篇 innodb體系架構 二 記憶體 從緩衝池 緩衝池的管理 重做日誌緩衝 額外記憶體緩衝這四個點介紹了innodb儲存引擎的記憶體結構,而在將緩衝池的資料重新整理到磁碟的過程中使用到了checkpoint技術,這篇文章我們著重講解一下checkpoint在記憶體中到應用...

InnoDB體系架構總結(一)

緩衝池 是一塊記憶體區域,通過記憶體的速度來彌補磁碟速度較慢對資料庫效能的影響。在資料庫中讀取的頁資料會存放到緩衝池中,下次再讀取相同頁的時候,會首先判斷 該頁是否在緩衝池中。對於資料庫中頁的修改操作,會首先修改在緩衝池中的頁,然後再以一定的頻率重新整理到磁碟上。緩衝池中快取的資料頁有 索引頁,資料...