首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 邏輯架構與儲存引擎深度解析:並發控制、鎖粒度、事務 ACID、MyISAM vs InnoDB 選型指南

     編輯:MySQL 資料庫相關知識

理解 MySQL 邏輯架構是效能調校與架構選型的基石。本文從連接層、服務層、儲存引擎層三層剖析,重點對比 MyISAM 與 InnoDB 的鎖機制、事務支援、崩潰恢復、備份特性,給出明確選型建議。

MySQL 邏輯三層架構

  1. 連接層:連線處理、認證、執行緒池、SSL。
  2. 服務層:查詢快取、解析器、優化器、執行器、內建函數、跨引擎功能(觸發器、視圖、Binlog)。
  3. 儲存引擎層:負責資料儲存與提取,透過統一 API 與服務層交互(handler 介面)。

並發控制與鎖機制

鎖類型別名相容性代表引擎
讀鎖共享鎖 (S)讀讀相容,讀寫互斥MyISAM (表鎖)
寫鎖排他鎖 (X)寫寫/讀寫互斥InnoDB (行鎖)

鎖粒度與並發效能

  • 表鎖:開銷小、鎖定快、衝突率高、並發度低。MyISAM 預設。
  • 行鎖:開銷大、鎖定慢、衝突率低、並發度高。InnoDB 預設,支援間隙鎖、Next-Key Lock。
  • 粒度越細 → 系統管理鎖的開銷越大,但併發吞吐越高。

事務與 ACID 特性

特性英文含義
原子性Atomicity全做或全不做
一致性Consistency從一致狀態轉換到一致狀態
隔離性Isolation事務間互不干擾
持久性Durability提交後永久生效

事務狀態機:Active → Partially Committed → Committed / Failed → Aborted。

儲存引擎對比:MyISAM vs InnoDB

維度MyISAMInnoDB
檔案結構.frm/.MYD/.MYI 三檔.frm + 共享表空間 ibdata1 / 獨立 .ibd
鎖粒度表鎖行鎖
事務不支援支援 (ACID)
外鍵不支援支援
索引類型非叢集 (Heap)叢集索引 (PK 即資料)
崩潰恢復慢,需 REPAIR TABLE快,Redo/Undo Log 自動恢復
熱備份不支援支援 (xtrabackup/--single-transaction)
全文索引5.6+ 支援5.6+ 支援

選型決策樹

  1. 需要事務/外鍵/行鎖/熱備份/崩潰安全 → InnoDB(MySQL 5.5+ 預設)。
  2. 純讀取、資料量小、不需事務、全文搜尋舊版本 → MyISAM 可考慮。
  3. 不確定時 → 直接用 InnoDB,效能與安全性雙贏。

查看目前引擎:SHOW TABLE STATUS LIKE 't'\\G 或 SHOW CREATE TABLE t。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved