臟讀:當一個事務開始更新數據,但是這個事務并沒有完全提交,這個時候第二個事務開始讀取數據,把第一個事務所更改的數據讀了出來,
第二個事務讀取的數據時臨時的,因為有可能第一個事務最終有可能做回滾操作
不可重復讀:在一個事務中多次讀取某一行數據,可能會得到不同的結果
幻讀:在一個事務中,我們讀取數據,發現沒有特定的行,第一個事務還沒結束,這個時候第二個事務插入了該行數據,
然后在第一個事務再次讀取時,該行數據突然出現了
SQLServer數據庫支持一下隔離級別:未提交讀、已提交讀、可重復讀、快照、可序列化。
隔離級別 | 是否申請共享鎖 | 何時釋放 | 有無范圍鎖 |
未提交讀 | 不申請 | -- | 無 |
已提交讀 | 申請 | 當前語句執行完 | 無 |
可重復讀 | 申請 | 事務提交時 | 無 |
可序列化 | 申請 | 事務提交時 | 有 |
不同隔離級別的并發副作用:
隔離級別 | 臟讀 | 不可重復讀 | 幻讀 |
未提交讀 | 是 | 是 | 是 |
已提交讀 | 否 | 是 | 是 |
可重復讀 | 否 | 否 | 是 |
快照 | 否 | 否 | 否 |
可序列化 | 否 | 否 | 否 |
新聞熱點
疑難解答