【學習SQL數據庫】併發操作引起的數據庫不一致

丟失修改

事務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讀取的數據與數據庫不一致,讀到了錯誤的數據

原因

數據庫不一致的原因:併發操作破環了事務的隔離性,事務間相互干擾。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章