事務
-
事務的簡介
事務是一組操作的合集,它是一個不可分割的作業單位,事務會把所有的操作作為一個整體,一起向系統提交或撤銷操作請求,這些操作只有同時成功、同時失敗;
事務的操作
-
查看、設定事務提交方式
-- 查看事務的提交方式(若為“1”則是自動提交,若為“0”則是手動提交) select @@autocommit; -- 設定事務為手動提交 set @@autocommit = 0; -
提交事務
commit; -
回滾事務
rollback; -
開啟事務
start transaction;begin;
事務的四大特性(ACID)
-
原子性(Atomicity)
事務是不可分割的最小操作單元,要么全部成功要么全部失敗;
-
一致性(Consistency)
事務完成時,必須使所有的資料都保持一致的狀態;
-
隔離性(Isolation)
資料庫系統提供的隔離機制,保證事務在不受外部并發操作影響的獨立環境下運行;
-
持久性(Durability)
事務一旦提交或回滾,它對資料庫中的資料大的改變就是永久的;
并發事務問題
| 問題 | 描述 |
|---|---|
| 臟讀 | 一個事務讀到另一個事務還沒有提交的資料; |
| 不可重復讀 | 一個事務先后讀取同一條記錄,但兩次讀取的資料不同; |
| 幻讀 | 一個事務按照條件查詢資料時,沒有對應的資料行,但是在插入資料時,又發現這行資料已經存在; |
事務的隔離級別
| 隔離級別 | 臟讀 | 不可重復讀 | 幻讀 |
|---|---|---|---|
| Read uncommitted | Y | Y | Y |
| Read committed | N | Y | Y |
| Repeatable Read | N | N | Y |
| Serializable | N | N | N |
(注意:Repeatable Read 為MySQL的默認隔離級別;)
-
查看事務隔離級別
select @@transaction_isolation; -
設定事務隔離級別
set session\global transaction isolation level 隔離級別;(注意:session為針對當前客戶端視窗有效;global為針對所有客戶端的視窗有效;)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/499925.html
標籤:其他
上一篇:SQL的多表查詢
