【數據庫事務】-1.數據庫併發訪問帶來的4個問題

一.更新的丟失
舉例:同一時間我把名字改成張三,你把名字改成李四,你一提交把我的更新張三覆蓋了。

 造成原因:別人修改後的數據把我修改後的數據覆蓋了。

 

二.髒讀
舉例:老師覺的本次考試題難,給每個學生加上10分,你本來考了59分沒有及格,你一查詢讀到69分,我及格了很高興回家了,但是老師覺得算了還是不要加10分了,又回滾了,那你又成了59分,但是你當時查的時候69分,高高興興回家了。

造成原因:用戶讀取的數據是其他事務修改進行中的數據。

 

三.可重複讀

舉例1:小明考了59分,去交補考費,先查一下是59分,sql語句繳納補考費,再次sql確認查詢一下自己分數,此時老師覺得小明是班長,給小明加上10分,當小明確認分數的時候成了69分了,小明說什麼情況我補考費都交了,我怎麼又成了69分,怎麼回事?

舉例2:超市,商品小於等於10個了,你就要上貨,開始Sql查詢商品是9個,Sql上貨,另外一個人做盤盈,在角落裏發現了1個,然後數量+1,這時候數量是10個,你Sql上貨後下一步再次查詢庫存,一看是10個了,我去怎麼回事,剛纔不是9個麼?

造成原因:在一個事務中,兩次讀取某一固定行中某列的值不一樣,因爲你在查的過程中,另外一個用戶在更新數據。

四.幻影讀

 

舉例:老師查找網絡版有多少學生,第1次查詢是20條,第2次查詢是25條,怎麼回事第1次查詢的條數和第2次查詢的條數不一樣。

 

造成原因:在一個事務中,兩次讀取滿足某一定條件的記錄數,條數不一樣,因爲你在查的過程中,另外一個用戶在插入數據或者刪除數據。

 

 

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