1. 程式人生 > 實用技巧 >Mysql 事務管理

Mysql 事務管理

Mysql 和其它的資料庫產品有一個很大的不同就是事務由儲存引擎所決定,例如 MYISAM,MEMORY,ARCHIVE 都不支援事務,事務就是為了解決一組查詢要麼全部執行成功,要麼全部執行失敗。

Mysql 事務預設是採取自動提交的模式,除非顯示開始一個事務

MariaDB [(none)]> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.00 sec)

修改自動提交模式:0=OFF,1=ON

注意:修改自動提交對非事務型別的表是無效的,因為它們本身就沒有提交和回滾的概念,還有一些命令是會強制自動提交的,比如DLL命令、lock tables等。

SET AUTOCOMMIT=OFF
或
SET AUTOCOMMIT=0

事務的 ACID 特性:原子性,一致性,隔離性,永續性。

原子性:事務是不可分割的最小工作單元,整個事務要麼全部提交要麼全部回滾失敗。

一致性:資料庫總是從一個一致性狀態轉換到另一個一致性的狀態。

隔離性: 一個事務所做的更改在最終提交之前其它事務是不可見的。

永續性:事務一旦提交所做的修改就會永久儲存在資料庫中,即使系統崩潰,資料也不會丟失。