MySQL的事務,容易懂,快來看看吧!
阿新 • • 發佈:2018-11-01
事務
1.儲存引擎
- Mysql核心儲存引擎。
- Mysql5.5 預設採用innoDB。(my.ini)
2.什麼是事務
- 事務用於保證資料的一致性,由一組DML操作組成,該組SQL語句要麼同時成功,要麼同時失敗。例如轉賬。
3.事務的四大特性(ACID)
- 原子性: dml作為整體不可分割。
- 一致性: 事務執行前後整體的狀態不變。
- 隔離性: 併發事務之間互相獨立,不能相互干擾。
- 永續性: 事務執行完畢,則資料將持久化到資料庫。
4.併發事務產生的問題
- 髒讀: 一個事務讀到另一個事務未提交的資料。
- 不可重複讀: 在一個事務t1執行過程中,由另一個事務t2對該資料進行修改並且提交了事務;t1再次進行處理時發現數據已經改變。
- 幻讀(虛讀): 在一個事務t1的執行過程中,另一個事務t2對該資料進行增加刪除操作並且提交事務;t1再次讀取時發現數據不一致。
5.事務隔離級別
- 讀未提交: 無法解決問題
- 讀已提交: 解決髒讀問題。 Oracle
- 可重複讀: 解決髒讀和不可重複讀問題。 Mysql
- 序列化: 解決所有問題。
6.資料庫中事務語法
set autocommit=0; start TRANSACTION; update account set money=money-100 where aid = 1; update account set money=money+100 where aid = 2; #commit; rollback;