【數據庫】SQL標准定義的四個事務隔離級別


SQL 標准定義的四個事務隔離級別為:
1.Read Uncommitted ( 未提交讀 )

可以讀取其它事務修改但未提交的數據,但是會導致“臟讀”、“幻讀”和“不可重復讀取”。

2.Read Committed (提交讀)

只能讀取其它事務修改並已經提交的數據。避免了“臟讀取”,但不能避免“幻讀”和“不可重復讀取”。提交讀是大多數主流數據庫的默認事務等級。

3.Repeatable Read (可重復讀)

鎖定已經讀取的數據,當前事務提交前其它事務不允許修改。避免了“臟讀取”和“不可重復讀取”的情況,但不能避免“幻讀”,但是帶來了更多的性能損失。

4.Serializable (可串行化)

讀取前鎖定所有要讀取的數據,當前事務提交前,其它事務不允許修改。最嚴格的級別,事務串行執行,資源消耗最大。

臟讀:所謂的臟讀,其實就是讀到了別的事務回滾前的臟數據。比如事務B執行過程中修改了數據X,在未提交前,事務A讀取了X,而事務B卻回滾了,這樣事務A就形成了臟讀。

不可重復讀:事務A首先讀取了一條數據,然后執行邏輯的時候,事務B將這條數據改變了,然后事務A再次讀取的時候,發現數據不匹配了,就是所謂的不可重復讀了。

幻讀:事務A首先根據條件索引得到N條數據,然后事務B改變了這N條數據之外的M條或者增添了M條符合事務A搜索條件的數據,導致事務A再次搜索發現有N+M條數據了,就產生了幻讀。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM