基礎知識:
事務的基本要素 :acid
a:atomicity(原子性)
事務開始後所有操作,要麼全部做完,要麼全部不做,不可能停滯在中間環節
c:consistency(一致性)
a向b轉賬,不可能a扣了錢,b卻沒收到
i:isolation(隔離性)
a正在從一張銀行卡中取錢,在a取錢的過程結束前,b不能向這張卡轉賬
d:durability(永續性)
事務完成後,事務對資料庫的所有更新將被儲存到資料庫,不能回滾
事務隔離級別
髒讀不可重複讀
幻讀讀未提交(read-uncommitted)是是
是不可重複讀(read-committed)否是
是可重複讀(repeatable-read)否否
是序列化(serializable)否否
否 讀未提交(read-uncommitted):
a、b兩個客戶端,a查詢表a中,小王的卡上餘額為100元,這時候,b對金額進行修改,改為200,但是b還沒有提交事務,a再次查詢,查到的是200元,這種在沒提交事務的時候查詢出的資料為臟資料;(b有可能為誤操作,進行回滾)
不可重複讀(read-committed):
a、b兩個客戶端,a查詢表a中,小王的卡上餘額為100元,這時候,b對金額進行修改,改為200,但是b還沒有提交事務,a再次查詢,查到的確實是100元(因為b沒有提交),在b提交時候後,a再次查詢,為200元;a的這兩次查詢結果的不一致,就叫做不可重複讀
可重複讀(repeatable-read):
a、b兩個客戶端,a查詢表a中,小王的卡上餘額為100元,這時候,b對金額進行修改,改為200,但是b還沒有提交事務,a再次查詢,查到的確實是100元(因為b沒有提交),在b提交時候後,a再次查詢,仍然為100元;a的這兩次查詢結果一致,解決了不可重複讀的問題。不過如果a對小王的餘額執行更新語句,讓卡上餘額多500,那麼再次查詢後,餘額就為700了(500+200)
注意:可重複讀的隔離級別下使用了mvcc機制,select操作不會更新版本號,是快照讀(歷史版本);insert、update和delete會更新版本號,是當前讀(當前版本)
序列化(serializable):
a、b兩個客戶端,a查詢表a中,小王的卡上餘額為100元,這時候,b對金額進行修改,改為200,執行的時候報錯,因為這種隔離級別會鎖表
在這種情況下,只允許乙個事務在執行,其它事務必須等待這個事務執行完後才能執行。沒有併發,只是單純的序列。
附;a:atomicity(原子性)
整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回滾(rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
c:consistency(一致性)
乙個事務可以封裝狀態改變(除非它是乙個唯讀的)。事務必須始終保持系統處於一致的狀態,不管在任何給定的時間併發事務有多少。
也就是說:如果事務是併發多個,系統也必須如同序列事務一樣操作。其主要特徵是保護性和不變性(preserving an invariant),以轉賬案例為例,假設有五個賬戶,每個賬戶餘額是100元,那麼五個賬戶總額是500元,如果在這個5個賬戶之間同時發生多個轉賬,無論併發多少個,比如在a與b賬戶之間轉賬5元,在c與d賬戶之間轉賬10元,在b與e之間轉賬15元,五個賬戶總額也應該還是500元,這就是保護性和不變性。
i:isolation(隔離性)
隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,執行在相同的時間內,執行相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。這種屬性有時稱為序列化,為了防止事務操作間的混淆,必須序列化或序列化請求,使得在同一時間僅有乙個請求用於同一資料。
d:durability(永續性)
在事務完成以後,該事務對資料庫所作的更改便持久的儲存在資料庫之中,並不會被回滾。
MySQL的四種事務隔離
sql標準定義了4類隔離級別,包括了一些具體規則,用來限定事務內外的哪些改變是可見的,哪些是不可見的。低階別的隔離級一般支援更高的併發處理,並擁有更低的系統開銷。read uncommitted 讀取未提交內容 在該隔離級別,所有事務都可以看到其他未提交事務的執行結果。本隔離級別很少用於實際應用,因...
mysql4種事務 Mysql事務四種隔離級別
首先可查詢mysql自動提交狀態 select autocommit 結果如下 autocommit 1 可通過命令將資料庫事務修改為不自動提交 set autocommit 0 mysql四種事務隔離級別 1.讀未提交 read uncommitted 也叫髒讀 助記骯髒 設定事務隔離級別為 讀未...
真正理解MySQL的四種事務隔離級別
事務具有四個特徵 原子性 atomicity 一致性 consistency 隔離性 isolation 和持續性 durability 這四個特性簡稱為 acid 特性。原子性 事務是資料庫的邏輯工作單位,事務中包含的各操作要麼都做,要麼都不做。一致性 事務執行的結果必須是使資料庫從乙個一致性狀態...