1、髒讀 (dirty read)
a事務讀到b事務尚未提交的資料,就是髒讀。
例如:事務a更新某條資料
事務b讀取該條資料
事務a commit
事務b commit
這種情況下事務b讀的就是髒資料。
2、不可重複讀 (unrepeatable read)
在同乙個事務中,再次讀取資料時(就是你的select操作),所讀取的資料,和第1次讀取的資料,不一樣了。就是不可重複讀。
例如:事務a讀取資料
事務b更新資料
事務b commit
事務a再次讀取資料
這時a兩次讀取的資料就不一樣了,也就是不可重複讀。
3、幻讀 (phantom read)
事務a讀取與搜尋條件相匹配的若干行。事務b以插入或刪除行等方式來修改事務a的結果集,然後再提交。
例如:事務a查詢到了5條資料
事務b更新了相關聯的表
事務b commit
事務a再次查詢只得到了4條資料
這次事務a就是幻讀了
正確理解髒讀 不可重複讀 幻讀
1 髒讀 dirty read a事務讀到b事務尚未提交的資料,就是髒讀。例如 事務a更新某條資料 事務b讀取該條資料 事務a commit 事務b commit 這種情況下事務b讀的就是髒資料。2 不可重複讀 unrepeatable read 在同乙個事務中,再次讀取資料時 就是你的select...
髒讀,不可重複讀,幻讀
髒讀,不可重複讀,幻讀是由於資料庫事務的隔離性導致的問題。髒讀 乙個事務讀取到了其它未提交事務操作的記錄。不可重複讀 乙個事務a內,首次查詢到一條相同記錄,然後事務b修改該條記錄並提交,事務a再次執行相同查詢,得到了事務b更新後的結果,事務a兩次相同的查詢,卻得到了不同的結果,這個叫做不可重複讀。是...
髒讀 不可重複讀 幻讀
髒讀 事務a使用了資料,但是還沒來得及提交,事務b就使用了這個資料,對於事務b來說就是髒讀。允許髒讀 sql server select from category with nolock 不可重複讀 事務a在9點和12點都會操作乙份資料,但是在10點的時候,事務b也操作了該份資料,並且使其數值進行...