正確理解髒讀 不可重複讀 幻讀

2021-09-02 09:17:08 字數 555 閱讀 1769

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也操作了該份資料,並且使其數值進行...