首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 事務完整指南:ACID 特性、引擎選擇、隔離級別、Savepoint 部分回滾與實戰範例

     編輯:MySQL 綜合教學

MySQL 事務完整指南:ACID 特性、引擎選擇、隔離級別、Savepoint 部分回滾與實戰範例

事務是資料庫一致性的基石。本文系統梳理 ACID 四大特性、引擎支援差異、隱式提交陷阱、Savepoint 機制,提供從基礎到進階的完整實戰範例。

一、事務四大特性(ACID)

特性英文核心含義
原子性Atomicity全做或全不做,不可分割
一致性Consistency事務前後資料庫滿足所有約束
隔離性Isolation並發事務互不干擾
持久性DurabilityCommit 後永久生效,不怕崩潰

二、引擎支援差異

SHOW ENGINES;
  • MyISAM: 不支援事務,操作即時生效;
  • InnoDB: 完整支援 ACID、行鎖、MVCC、外鍵;
  • 修改表引擎:ALTER TABLE person ENGINE=InnoDB;

三、事務控制關鍵字

BEGIN | START TRANSACTION   -- 開啟
COMMIT                      -- 提交
ROLLBACK                    -- 回滾
SAVEPOINT name              -- 設定保存點
ROLLBACK TO SAVEPOINT name  -- 回滾至保存點
RELEASE SAVEPOINT name      -- 釋放保存點

隱式提交陷阱: DDL(CREATE/ALTER/DROP)、DCL(GRANT/REVOKE)、TRUNCATE 會強制提交當前事務,不可回滾。

四、基礎實戰範例

BEGIN;
UPDATE score SET score=40 WHERE scoreid=1;
SAVEPOINT s1;           -- 保存點 1

UPDATE score SET score=50 WHERE scoreid=2;
SELECT * FROM score;    -- 兩筆皆已修改

ROLLBACK TO SAVEPOINT s1;  -- 僅回滾 scoreid=2 的修改
SELECT * FROM score;    -- scoreid=1 保持 40,scoreid=2 恢復原值

COMMIT;                 -- 提交 scoreid=1 的修改

六、Savepoint 關鍵限制

  1. 只能 ROLLBACK TO SAVEPOINT,不能 COMMIT TO SAVEPOINT;
  2. 最終必須 COMMIT 或 ROLLBACK 結束事務,未提交的保存點修改不會持久化;
  3. 保存點名稱在事務內唯一,重複名稱會覆蓋舊保存點。

七、隔離級別與鎖關聯(補充)

InnoDB 預設 REPEATABLE READ,透過 MVCC + Next-Key Lock 實現。可透過 SET SESSION TRANSACTION ISOLATION LEVEL ... 調整,但需評估幻讀/死鎖風險。

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