您好,登錄后才能下訂單哦!
事務(Transaction)是并發(fā)控制的基本單位。
所謂事務,它是一個操作序列,這些操作要么都執(zhí)行,要么都不執(zhí)行,它是一個不可分割的工作單位。例如,銀行轉(zhuǎn)帳工作:從一個帳號扣款并使另一個帳號增款,這兩個操作要么都執(zhí)行,要么都不執(zhí)行。
數(shù)據(jù)庫事務必須具備ACID特性,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔離性)和Durability(持久性)的英文縮寫。
原子性:指整個數(shù)據(jù)庫事務是不可分割的工作單位。只有使據(jù)庫中所有的操作執(zhí)行成功,才算整個事務成功;事務中任何一個SQL語句執(zhí)行失敗,那么已經(jīng)執(zhí)行成功的SQL語句也必須撤銷,數(shù)據(jù)庫狀態(tài)應該退回到執(zhí)行事務前的狀態(tài)。
一致性:指數(shù)據(jù)庫事務不能破壞關系數(shù)據(jù)的完整性以及業(yè)務邏輯上的一致性。例如對銀行轉(zhuǎn)帳事務,不管事務成功還是失敗,應該保證事務結(jié)束后ACCOUNTS表中Tom和Jack的存款總額為2000元。
隔離性:指的是在并發(fā)環(huán)境中,當不同的事務同時操縱相同的數(shù)據(jù)時,每個事務都有各自的完整數(shù)據(jù)空間。由并發(fā)事務所做的修改必須與任何其他并發(fā)事務所做的修改隔離。事務查看數(shù)據(jù)更新時,數(shù)據(jù)所處的狀態(tài)要么是另一事務修改它之前的狀態(tài),要么是另一事務修改它之后的狀態(tài),事務不會查看到中間狀態(tài)的數(shù)據(jù)。
持久性:指的是只要事務成功結(jié)束,它對數(shù)據(jù)庫所做的更新就必須永久保存下來。即使發(fā)生系統(tǒng)崩潰,重新啟動數(shù)據(jù)庫系統(tǒng)后,數(shù)據(jù)庫還能恢復到事務成功結(jié)束時的狀態(tài)。
事務的(ACID)特性是由關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS,數(shù)據(jù)庫系統(tǒng))來實現(xiàn)的。數(shù)據(jù)庫管理系統(tǒng)采用日志來保證事務的原子性、一致性和持久性。日志記錄了事務對數(shù)據(jù)庫所做的更新,如果某個事務在執(zhí)行過程中發(fā)生錯誤,就可以根據(jù)日志,撤銷事務對數(shù)據(jù)庫已做的更新,使數(shù)據(jù)庫退回到執(zhí)行事務前的初始狀態(tài)。
數(shù)據(jù)庫管理系統(tǒng)采用鎖機制來實現(xiàn)事務的隔離性。當多個事務同時更新數(shù)據(jù)庫中相同的數(shù)據(jù)時,只允許持有鎖的事務能更新該數(shù)據(jù),其他事務必須等待,直到前一個事務釋放了鎖,其他事務才有機會更新該數(shù)據(jù)。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。