MySQL InnoDB 介紹

早期是由Innobase Oy公司開發,是第一個完整支援 ACID 的 MySQL 存儲引擎。具有插入緩存、兩次寫、自我調整雜湊索引等關鍵特性,是一個高性能、高可用的存儲引擎。

MySQL 系統架構

MySQL 最下方的Storage engines決定MySQL會如何讀寫與儲存資料。也因此MySQL提供使用者去決定要用哪種Storage engine(InnoDB、MyISAM、MEMORY、CSV甚至可以自行該發)

從上面這張圖的架構來看,InnoDB分為兩大區塊:In-Memory 與 On-Disk Structures。

通常MySQL不會直接修改硬碟上的資料,通常會先存在記憶體中(Buffer Pool),然後紀錄redo log,等系統空閒才會更改硬碟資料,以加快執行速度。

Buffer Pool

通常以Page為單位,基本上Buffer Pool 就是 a linked list of pages。採用LRU(Last Recently Used) 演算法管理資料。

Change Buffer

InnoDB 存儲引擎有 13 個後臺執行緒:

  • 一個 master 執行緒
  • 一個鎖監控執行緒
  • 一個錯誤監控執行緒
  • 十個 IO 執行緒
    • 插入緩存執行緒
    • 日誌執行緒
    • 讀執行緒(預設 4 個)
    • 寫執行緒(預設 4 個)

參考資料

發佈留言