事務
-
概念:一組相互捆綁共同完成操作的執行單元
-
事務屬性:ACID
- 原子性(Atomicity):語句共同操作
- 一致性(Consistency):事務執行前後整體不改變
- 隔離性(Isolation):一個事務執行不能被其他事務干擾
- 持久性(Durability):事務提交後即生效,不可更改
- 事務使用方法:
- 事務的開啓:SET autocommit = 0; start transaction;
- 編寫事務語句:語句1;語句2;…
- 事務結束:commit;或者 rollback;
-
事務隔離:避免多個事務相互衝突
-
常見的併發問題:
- 髒讀:讀出了無效的,其他事務未提交的數據(髒數據)
- 不可重複讀:一個事務內,多次查詢出現了不同的結果;重點在數據被修改
- 幻讀:讀到的數據條數不一樣,重點在新增和刪除
-
隔離級別(MySQL):
- Read Uncommited:允許事務讀取其他未提交事務的變更,髒讀,不可重複讀,幻讀都會出現
- Read Commited:只允許事務讀取其他事務提交的更改,可以避免髒讀,但有不可重複讀,幻讀
- Pepeatable Read:在此事務持續期間不允許其他事務更改該字段,但可讀,可出現幻讀
- Serialization:在此事務期間禁止其他事務的任何操作
-