一,事務
一、含義
事務:一條或多條sql語句組成一個執行單位,一組sql語句要麼都執行要麼都不執行
二、特點(ACID)
A 原子性:一個事務是不可再分割的整體,要麼都執行要麼都不執行
C 一致性:一個事務可以使數據從一個一致狀態切換到另外一個一致的狀態
I 隔離性:一個事務不受其他事務的干擾,多個事務互相隔離的
D 持久性:一個事務一旦提交了,則永久的持久化到本地
三、事務的使用步驟 ★
瞭解:
隱式(自動)事務:沒有明顯的開啓和結束,本身就是一條事務可以自動提交,比如insert、update、delete
顯式事務:具有明顯的開啓和結束
使用顯式事務:
①開啓事務
set autocommit=0;
start transaction;#可以省略
②編寫一組邏輯sql語句
注意:sql語句支持的是insert、update、delete
設置回滾點:
savepoint 回滾點名;
③結束事務
提交:commit;
回滾:rollback;
回滾到指定的地方:rollback to 回滾點名;
四、併發事務
1、事務的併發問題是如何發生的?
多個事務 同時 操作 同一個數據庫的相同數據時
2、併發問題都有哪些?
髒讀:一個事務讀取了其他事務還沒有提交的數據,讀到的是其他事務“更新”的數據
不可重複讀:一個事務多次讀取,結果不一樣
幻讀:一個事務讀取了其他事務還沒有提交的數據,只是讀到的是 其他事務“插入”的數據
3、如何解決併發問題
通過設置隔離級別來解決併發問題
4、隔離級別
髒讀 不可重複讀 幻讀
read uncommitted:讀未提交 × × ×
read committed:讀已提交 √ × ×
repeatable read:可重複讀 √ √ ×
serializable:串行化 √ √ √