| 特性 | 事務型(InnoDB/BDB) | 非事務型(MyISAM) |
|---|---|---|
| 核心模型 | ACID:原子性、一致性、隔離性、持久性 | 原子操作:單條 SQL 要麼全成功要麼全失敗 |
| 資源開銷 | 記憶體、磁碟、CPU 較高 | 輕量,速度快 3-5 倍 |
| 並發控制 | 行級鎖、MVCC | 表級鎖 |
| 崩潰恢復 | 自動回滾/前滾(Redo/Undo Log) | 依賴備份與 CHECK TABLE/REPAIR TABLE |
| 適用場景 | 金融、訂單、庫存等強一致性業務 | 日誌、統計、唯讀、高讀低寫場景 |
LOCK TABLES t1 WRITE, t2 READ;
-- 檢查條件
UPDATE t1 SET ... WHERE ...;
UNLOCK TABLES;
模擬事務「全有或全無」,避免並發干擾。WHERE 子句帶入舊值比對,如 WHERE id=1 AND balance=100,若行已被改則影響行數為 0,應用層感知衝突。UPDATE t SET col=col+10 相對當前值修改,天然原子。UPDATE t SET flag=1 WHERE id=5 AND flag<>1; 影響行數為 1 表示獲取鎖成功。事務非銀彈,原子操作非玩具。**InnoDB 以資源換取自動一致性保障;MyISAM 以速度換取開發者手動控制一致性的責任。** 理解兩者邊界,按表選型,才是 MySQL 高效用的關鍵。