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

MySQL 事務機制入門:ACID 特性與事務分類詳解

     編輯:MySQL 綜合教學

MySQL 事務機制入門:ACID 特性與事務分類詳解

事務是數據庫區別於文件系統的核心特性。以 ATM 取款為例:扣款與出鈔必須同時成功或同時失敗,這就是事務的原子性。

ACID 四大特性

特性英文含義
原子性Atomicity事務內所有操作要么全做,要么全不做;失敗自動回滾。
一致性Consistency事務前後數據庫從一個一致狀態變為另一個一致狀態,完整性約束不被破壞。
隔離性Isolation併發事務互不干擾,通過鎖/MVCC 實現;未提交對其它事務不可見。
持久性Durability提交後永久生效,掉電不丟失;靠 Redo Log + 雙寫緩衝保證。

事務分類(理論層面)

  1. 扁平事務:最常見,BEGIN ... COMMIT/ROLLBACK,不可部分提交/回滾。
  2. 帶保存點的扁平事務:SAVEPOINT sp1; ... ROLLBACK TO sp1; 可回滾到中間點。
  3. 鏈事務:前一事務提交時隱式啟動下一事務,保留上下文。
  4. 嵌套事務:事務中嵌套子事務,子事務提交不代表頂層提交(MySQL 不原生支持,需模擬)。
  5. 分布式事務:跨多個資源管理器(多庫/庫+MQ),需 XA 兩階段提交(MySQL 支持 XA START)。

MySQL 事務控制語句

START TRANSACTION;  -- 或 BEGIN
-- SQL 語句
COMMIT;             -- 提交
ROLLBACK;           -- 回滾
SAVEPOINT sp1;      -- 保存點
ROLLBACK TO sp1;    -- 回滾到保存點
RELEASE SAVEPOINT sp1;  -- 釋放保存點

隔離級別與現象

隔離級別髒讀不可重複讀幻讀
READ UNCOMMITTEDYYY
READ COMMITTEDNYY
REPEATABLE READ (默認)NNY (InnoDB 靠 Next-Key Lock 解決)
SERIALIZABLENNN

查看/設置:SHOW VARIABLES LIKE 'transaction_isolation'; / SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;

隱式提交場景

DDL(CREATE/DROP/ALTER)、TRUNCATE、LOCK TABLES、SET AUTOCOMMIT=1 會隱式提交當前事務,謹慎使用。

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