1.讀未提交(Read Uncommitted)
事務A可以讀取事務B中未提交的資料
可能發生髒讀、不可重複讀
2.讀已提交(Read Committed)
事務A中可以讀取事務B中已經commit的資料(通過事務檢視構建實現)
可能存在不可重複讀
3.可重複讀(Repeatable Read)
查詢出來的資料不會受其他事務的影響(查詢的是事務檢視,會儲存回滾日誌)
可能發生幻讀
4.序列化 (Serializable )
對一條記錄做修改時會加讀寫鎖,發生衝突時後訪問的事務必須等前一個事務提交才能執行
髒讀:
當資料庫中一個事務A正在修改一個資料但是還未提交或者回滾,
另一個事務B 來讀取了修改後的內容並且使用了,
之後事務A提交了,此時就引起了髒讀。
此情況僅會發生在: 讀未提交的的隔離級別.
不可重複讀:
在一個事務A中多次運算元據,在事務操作過程中(未最終提交),
事務B也才做了處理,並且該值發生了改變,這時候就會導致A在事務操作
的時候,發現資料與第一次不一樣了。 就是不可重複讀。
此情況僅會發生在:讀未提交、讀提交的隔離級別.
幻讀:
一個事務按相同的查詢條件重新讀取以前檢索過的資料,
卻發現其他事務插入了滿足其查詢條件的新資料,這種現象就稱為幻讀。
幻讀是指當事務不是獨立執行時發生的一種現象,例如第一個事務對一個表中的資料進行了修改,比如這種修改涉及到表中的“全部資料行”。同時,第二個事務也修改這個表中的資料,這種修改是向表中插入“一行新資料”。那麼,以後就會發生操作第一個事務的使用者發現表中還存在沒有修改的資料行,就好象發生了幻覺一樣.
一般解決幻讀的方法是增加範圍鎖RangeS,鎖定檢索範圍為只讀,這樣就避免了幻讀。
此情況會回發生在:讀未提交、讀提交、可重複讀的隔離級別.
本作品採用《CC 協議》,轉載必須註明作者和本文連結