數(shù)據(jù)庫的事務(wù)

ACID,事務(wù)應(yīng)該具有的四個屬性

  • Atomicity(原子性),一個事務(wù)是一個不可分割的工作單位,事務(wù)中包括的各個操作要么都做,要么都不做

  • Consistency(一致性),事務(wù)必須是使數(shù)據(jù)庫從一個一致性狀態(tài)轉(zhuǎn)變到另一個一致性狀態(tài)。一致性與原子性是密切相關(guān)的

  • Isolation(隔離型),一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間是不能相互干擾的

  • Durability(持久性),一個事務(wù)一旦提交,他對數(shù)據(jù)庫中的數(shù)據(jù)的改變就是永久性的。接下來的其他操作或故障不應(yīng)該對其有任何影響

事務(wù)的并發(fā)問題

  • 臟讀:事務(wù)A讀取了事務(wù)B更新的數(shù)據(jù),然后B回滾操作,那么A讀取到的數(shù)據(jù)就是臟數(shù)據(jù)

  • 不可重復(fù)讀:事務(wù)A多次讀取同一數(shù)據(jù),事務(wù)B在事務(wù)A多次讀取的過程中,對數(shù)據(jù)做了更新操作并提交,導(dǎo)致事務(wù)A多次讀取同一條數(shù)據(jù)的結(jié)果不一致

  • 幻讀:事務(wù)A首先根據(jù)條件索引得到N條數(shù)據(jù),然后事務(wù)B改變了這N條數(shù)據(jù)之外的M條或者增添了M條符合事務(wù)A搜索條件的數(shù)據(jù),導(dǎo)致事務(wù)A再次搜索發(fā)現(xiàn)有N+M條數(shù)據(jù)了,就產(chǎn)生了幻讀。

事務(wù)的隔離級別

  • 未提交讀(read uncommited)臟讀
    • 事務(wù)中的修改,即使沒有提交,其他事務(wù)也可以看得到,會導(dǎo)致“臟讀”、“幻讀”和“不可重復(fù)讀取”。
  • 已提交讀(read comited)不可重復(fù)讀
    • 大多數(shù)主流數(shù)據(jù)庫的默認(rèn)事務(wù)等級,保證了一個事務(wù)不會讀到另一個并行事務(wù)已修改但未提交的數(shù)據(jù),避免了臟讀,但是不能避免幻讀和不可重復(fù)讀。
  • 可重復(fù)讀(repeatable read)
    • 保證了一個事務(wù)不會修改已經(jīng)由另一個事務(wù)讀取但未提交的數(shù)據(jù)。避免臟讀和不可重復(fù)讀的問題,但是不能避免幻讀。
  • 串行化(serializable)
    • 最嚴(yán)格的級別,事務(wù)串行執(zhí)行,資源消耗最大
事務(wù)隔離級別
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容