1. 程式人生 > >MySQL : 事務處理

MySQL : 事務處理

int pre 開啟事務 特點 nbsp rollback code margin 數據

【事務】一組SQL語句操作單元,組內所有SQL語句,完成一個業務

若整組成功,意味著組內的全部操作都成功;

反之,若其中任何一條語句失敗,意味著整個操作都失敗。

操作失敗,意味著整個過程都是沒有意義的,應使數據庫回到操作前的初始狀態。

【point】1. 失敗後,能回到開始位置;

2. 成功之前,其他用戶(進程、規劃)不能看到操作內的修改。

【思路】在一組操作之前,設計一個記號(備份點)。

【實現】利用 innodb 存儲引擎的“事務日誌”功能。

執行分為2個階段:

1. 執行階段;

2. 將執行結果提交給數據庫的階段;

其中,事務日誌便是將執行階段的結果保存,若用戶選擇提交,才將執行結果提交給數據庫。

(默認的執行方式:自動提交)

需要關閉自動提交功能(存在一個系統變量,autocommit 可以對自動提交進行配置)

1 set autocommit = 0 ;  // 0 意味著關閉自動提交功能;1 意味著開啟

技術分享

若成功,執行 commit 提交結果;

若失敗,執行 rollback ,回到起始位置。

--------------------------------------------------------------------------

常用的事務指令

1. start transaction 開啟事務(作用:關閉自動提交)。

特點:若事務結束了,無論成敗,都會提交機制,回到start時的狀態(原來是autocommit,就會回到autocommit狀態)

2. commit

3. rollback

小練習

1. 指令

2. 為什麽會有事務?

自動提交、事務日誌。

3. 事務的特點?(ACID)

1) 原子性:對於外界而言,事務中的SQL語句是一個整體;

2) 一致性:在事務執行過程中,數據不受其他操作的影響;

3) 隔離性:事務之間不會相互影響。

4) 持久性:事務一旦提交,意味著對數據庫產生了影響,不可以再回退。

MySQL : 事務處理