資料庫事務隔離級別?
臟讀:
一個事務a修改或添加了一條資料,在a事務提交之前,另一個事務b讀到了這條資料,并進行了操作,a如果回滾的話,臟讀可能會導致b操作不存在的資料,
不可重復讀:
在一次事務中的兩次相同條件的查詢不一致,比如a事務執行select count(*) from user where name=‘alex’ 這時事務b插入了一條資料name=alex并提交這就會導致事務a第二次查詢的時候多了一個計數
幻讀:
事務a與事務b是完全隔離的,事務a執行’select id from user得到的id為1和2.這個時候b事務在user表中添加了一條資料id=3并提交,然后事務a想添加一條id為3的資料,如果id是唯一的,那a就會發現插不進去并提示dumplicate entry 3 for key id,原因是事務a阻止事務b的插入行為,
資料庫事務隔離級別
Read uncommitted 讀未提交
公司發工資了,領導把20000元打到廖志偉的賬號上,但是該事務并未提交,而廖志偉正好去查看賬戶,發現工資已經到賬,是20000元整,非常高興,可是不幸的是,領導發現發給廖志偉的工資金額不對,是16000元,于是迅速修改金額,將事務提交,最后廖志偉實際的工資只有16000元,廖志偉慷訓喜一場,
出現上述情況,即我們所說的臟讀,兩個并發的事務,“事務A:領導給廖志偉發工資”、“事務B:廖志偉查詢工資賬戶”,事務B讀取了事務A尚未提交的資料,當隔離級別設定為Read uncommitted時,就可能出現臟讀,如何避免臟讀,請看下一
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/274118.html
標籤:其他
上一篇:iOS Predicate Format String Syntax 【NSPredicate在正則運算式的應用】
下一篇:SQLite3資料庫
