數(shù)據(jù)庫事務(wù)
事務(wù)(Transaction):一系列對系統(tǒng)中數(shù)據(jù)進行訪問與更新的操作所組成的一個程序執(zhí)行邏輯單元,說白了就是保證一段SQL語句的全部執(zhí)行,或者都不執(zhí)行
數(shù)據(jù)庫事務(wù)的四大特性(ACID)
· 原子性(Atomicity)
要么一個事務(wù)中的代買全部執(zhí)行,要么全不執(zhí)行
· 一致性(Consistency)
事務(wù)執(zhí)行前后,數(shù)據(jù)庫處于一致性狀態(tài)
eg: 事務(wù)執(zhí)行前 小A有5000元,小B有0元? ? 轉(zhuǎn)賬事務(wù)執(zhí)行后 A、B的和加起來還應(yīng)為5000元。
· 隔離性(Isolation)
事務(wù)的隔離指在并發(fā)環(huán)境中,并發(fā)事務(wù)之間互不干擾,相互隔離。但是事務(wù)的隔離是有等級的,解決臟讀、幻讀、重復(fù)讀問題
· 持久性(Duration)
事務(wù)一旦成功提交后,數(shù)據(jù)庫中的數(shù)據(jù)必須被永久的保存下來。
數(shù)據(jù)庫事務(wù)并發(fā)帶來的問題
臟讀:A事務(wù)讀取了還未提交事務(wù)B的數(shù)據(jù)更改,若事務(wù)B回滾則數(shù)據(jù)出錯

不可重復(fù)讀:事務(wù)A進行過程中,讀取了事務(wù)B對數(shù)據(jù)的 更改(修改刪除)導(dǎo)致兩次查詢結(jié)果不同

幻讀:事務(wù)A進行過程中,讀取了事務(wù)B對數(shù)據(jù)的新增數(shù)據(jù),導(dǎo)致兩次查詢結(jié)果不同

注意不可重復(fù)讀與幻讀的區(qū)別: 前者是指讀到了已經(jīng)提交的事務(wù)的更改數(shù)據(jù)(修改或刪除),后者是指讀到了其他已經(jīng)提交事務(wù)的新增數(shù)據(jù)。
隔離等級
對應(yīng)以上不同
① Serializable (順序執(zhí)行):可避免臟讀、不可重復(fù)讀、幻讀(表級鎖)的發(fā)生。
② Repeatable read (可重復(fù)讀):可避免臟讀、不可重復(fù)讀(行級表)的發(fā)生。(默認(rèn)隔離級別)
③ Read committed (讀已提交):可避免臟讀(只讀已提交事務(wù)的數(shù)據(jù))的發(fā)生。
④ Read uncommitted (讀未提交):最低級別,任何情況都無法保證。
簡書不能修改字體顏色???難受啊飛