TCL語句(二) -- 事務
一、含義
事務:一條或多條 sql 語句組成一個執行單位,一組 sql 語句要麽都執行要麽都不執行
二、特點(ACID 屬性)
A.原子性(Atomicity) 原子性是指事務是一個不可分割的工作單位,事務中的操作要麽 都發生,要麽都不發生。
C.一致性(Consistency) 事務必須使數據庫從一個一致性狀態變換到另外一個一致性狀態 。
I.隔離性(Isolation) 事務的隔離性是指一個事務的執行不能被其他事務幹擾,即一個 事務內部的操作及使用的數據對並發的其他事務是隔離的,並發 執行的各個事務之間不能互相幹擾。
D.持久性(Durability) 持久性是指一個事務一旦被提交,它對數據庫中數據的改變就是 永久性的,接下來的其他操作和數據庫故障不應該對其有任何影 響
三、事務的使用步驟★
隱式(自動)事務:沒有明顯的開始和結束,本身就是一條事務可以自動提交,比如 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:串行化 × × ×
TCL語句(二) -- 事務