丟失修改
事務1和事務2讀取同一數據後,事務1對數據進行修改,事務2的提交破環了事務1的提交,導致事務1對數據的修改丟失。
假設A爲4
時間序列 | 事務1 | 事務2 |
---|---|---|
1 | 讀取A(4) | |
2 | 讀取A(4) | |
3 | A=A+1(5) | |
4 | A=A+1(5) | |
4 | 提交A(5) | |
5 | 提交A(5) |
最終A的結果是5
事務1的修改並沒有起作用
不可重複讀
1. 事務1讀取數據後,事務2對數據進行了修改並提交,事務1再次讀取數據時發生變化。
時間序列 | 事務1 | 事務2 |
---|---|---|
1 | 讀取A(4) | |
2 | 讀取A(4) | |
3 | A=3 | |
4 | 提交A(3) | |
5 | 讀取A(3) |
事務1連續讀取的數據不一致
幻影現象
2. 事務1讀取數據後,事務2對數據刪除了部分記錄,事務1再次讀取數據時某些記錄丟失了。
3. 事務1讀取數據後,事務2對數據添加了部分記錄,事務1再次讀取數據發現多了一些記錄。
這裏的數據可以是表,記錄就是行
讀髒數據
事務1讀取數據之後,對數據修改並提交,但由於一些原因需要撤銷修改。在事務1撤銷操作之前,事務2讀取了數據。
時間序列 | 事務1 | 事務2 |
---|---|---|
1 | 讀取A(4) | |
2 | A=A+1(5) | |
3 | 提交A(5) | |
4 | 讀取A(5) | |
5 | 撤銷修改 A(4) |
事務2讀取的數據與數據庫不一致,讀到了錯誤的數據
原因
數據庫不一致的原因:併發操作破環了事務的隔離性,事務間相互干擾。