事務是數據庫區別於文件系統的核心特性。以 ATM 取款為例:扣款與出鈔必須同時成功或同時失敗,這就是事務的原子性。
| 特性 | 英文 | 含義 |
|---|---|---|
| 原子性 | Atomicity | 事務內所有操作要么全做,要么全不做;失敗自動回滾。 |
| 一致性 | Consistency | 事務前後數據庫從一個一致狀態變為另一個一致狀態,完整性約束不被破壞。 |
| 隔離性 | Isolation | 併發事務互不干擾,通過鎖/MVCC 實現;未提交對其它事務不可見。 |
| 持久性 | Durability | 提交後永久生效,掉電不丟失;靠 Redo Log + 雙寫緩衝保證。 |
BEGIN ... COMMIT/ROLLBACK,不可部分提交/回滾。SAVEPOINT sp1; ... ROLLBACK TO sp1; 可回滾到中間點。XA START)。START TRANSACTION; -- 或 BEGIN -- SQL 語句 COMMIT; -- 提交 ROLLBACK; -- 回滾 SAVEPOINT sp1; -- 保存點 ROLLBACK TO sp1; -- 回滾到保存點 RELEASE SAVEPOINT sp1; -- 釋放保存點
| 隔離級別 | 髒讀 | 不可重複讀 | 幻讀 |
|---|---|---|---|
| READ UNCOMMITTED | Y | Y | Y |
| READ COMMITTED | N | Y | Y |
| REPEATABLE READ (默認) | N | N | Y (InnoDB 靠 Next-Key Lock 解決) |
| SERIALIZABLE | N | N | N |
查看/設置:SHOW VARIABLES LIKE 'transaction_isolation'; / SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
DDL(CREATE/DROP/ALTER)、TRUNCATE、LOCK TABLES、SET AUTOCOMMIT=1 會隱式提交當前事務,謹慎使用。