數(shù)據(jù)庫事物詳解

1事務(wù)的概念
什么是事務(wù)衙荐?我們知道,數(shù)據(jù)庫是一個面向多用戶的共享機(jī)制浮创,因此數(shù)據(jù)庫管理系統(tǒng)應(yīng)當(dāng)具備并發(fā)控制和封鎖機(jī)制忧吟,保證數(shù)據(jù)庫系統(tǒng)的正常運(yùn)行。但是當(dāng)多個用戶訪問數(shù)據(jù)庫的時候斩披,如果每一個用戶程序一個一個的串行執(zhí)行溜族,則每一時刻只有一個用戶執(zhí)行對數(shù)據(jù)庫的操作,其他用戶必須等待垦沉,這樣的話會嚴(yán)重影響數(shù)據(jù)庫資源的使用煌抒。所以數(shù)據(jù)庫管理系統(tǒng)必有能夠保證多個用戶同時使用數(shù)據(jù)庫。但是這樣會出現(xiàn)以下三個主要異常問題:
臟讀數(shù)據(jù):當(dāng)?shù)谝粋€用戶修改數(shù)據(jù)時厕倍,第二個用戶在第一個用戶沒有確認(rèn)修改之前讀取了該數(shù)據(jù)寡壮,這時可能會出現(xiàn)臟讀現(xiàn)象。如果第一個用戶確認(rèn)了修改,第二個用戶檢索不到數(shù)據(jù)庫中所修改的數(shù)據(jù)况既,有時這種現(xiàn)象也稱為丟失修改这溅。(看到的不是一回事)
不可重復(fù)讀:當(dāng)某一個用戶對某一行數(shù)據(jù)進(jìn)行第一次讀取過程后,另外一個用戶對該數(shù)據(jù)進(jìn)行了修改棒仍,從第一個用戶的角度來看悲靴,如果再次讀取原先的數(shù)據(jù)會發(fā)現(xiàn)與前次不同,這就是不可重復(fù)讀現(xiàn)象降狠。
發(fā)生幻象:當(dāng)?shù)谝粋€用戶檢查某張表的時候对竣,沒有發(fā)現(xiàn)某個值X庇楞,但是在該用戶還沒操作完成之前榜配,另外一個用戶插入了一個X值,結(jié)果吕晌,導(dǎo)致第一個用戶認(rèn)為數(shù)據(jù)庫沒有X值蛋褥,而實(shí)際上數(shù)據(jù)庫有這個值X。這就是幻象睛驳。
用戶之間相互干擾烙心,出現(xiàn)的以上問題,后果不堪設(shè)想乏沸。因此數(shù)據(jù)庫系統(tǒng)采用事務(wù)的概念來解決這個問題淫茵。
事務(wù)是一系列作為一個邏輯單元來執(zhí)行的操作集合。它是數(shù)據(jù)庫維護(hù)數(shù)據(jù)一致性的單位蹬跃,它將數(shù)據(jù)庫從一致狀態(tài)轉(zhuǎn)變?yōu)樾碌囊恢聽顟B(tài)匙瘪,說的簡單一點(diǎn)就是,如果一組處理步驟要么全部發(fā)生要么一步也不執(zhí)行蝶缀,我們稱該組處理步驟為一個事務(wù)丹喻。這樣就保證了數(shù)據(jù)始終一致的狀態(tài),不至于破壞數(shù)據(jù)的完整性翁都、可靠性碍论。一個事務(wù)執(zhí)行以后,DBMS會自動檢查數(shù)據(jù)庫中數(shù)據(jù)的一致性柄慰。事務(wù)(Transaction)是并發(fā)控制的單位鳍悠,是用戶定義的一個操作序列。這些操作要么都做坐搔,要么都不做藏研,是一個不可分割的工作單位。通過事務(wù)薯蝎,SQL Server能將邏輯相關(guān)的一組操作綁定在一起遥倦,以便服務(wù)器保持?jǐn)?shù)據(jù)的完整性。
(2):事務(wù)通常是以BEGIN TRANSACTION開始,以COMMIT或ROLLBACK結(jié)束袒哥。
COMMIT表示提交缩筛,即提交事務(wù)的所有操作。具體地說就是將事務(wù)中所有對數(shù)據(jù)庫的更新寫回到磁盤上的物理數(shù)據(jù)庫中去堡称,事務(wù)正常結(jié)束瞎抛。
ROLLBACK表示回滾,即在事務(wù)運(yùn)行的過程中發(fā)生了某種故障却紧,事務(wù)不能繼續(xù)進(jìn)行桐臊,系統(tǒng)將事務(wù)中對數(shù)據(jù)庫的所有以完成的操作全部撤消,滾回到事務(wù)開始的狀態(tài)晓殊。
(3):事務(wù)運(yùn)行的三種模式:
A:自動提交事務(wù)
每條單獨(dú)的語句都是一個事務(wù)断凶。每個語句后都隱含一個COMMIT。
B:顯式事務(wù)
以BEGIN TRANSACTION顯式開始巫俺,以COMMIT或ROLLBACK顯式結(jié)束认烁。
C:隱性事務(wù)
在前一個事務(wù)完成時,新事務(wù)隱式啟動介汹,但每個事務(wù)仍以COMMIT或ROLLBACK顯式結(jié)束却嗡。
(4):事務(wù)的特性(ACID特性)
A:原子性(Atomicity)
事務(wù)是數(shù)據(jù)庫的邏輯工作單位,事務(wù)中包括的諸操作要么全做嘹承,要么全不做窗价。回滾就用到數(shù)據(jù)庫中的原子性叹卷,如果事物執(zhí)行過程中出現(xiàn)了錯誤撼港,就會回退到最開始。

例如銀行取款事務(wù)分為2個步驟(1)存折減款(2)提取現(xiàn)金豪娜。不可能存折減款餐胀,卻沒有提取現(xiàn)金。2個步驟必須同時完成或者都不完成瘤载。
B:一致性(Consistency)
事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)否灾。一致性與原子性是密切相關(guān)的。一致性是指事物執(zhí)行前和執(zhí)行完成后數(shù)據(jù)庫的完整性沒有被破壞鸣奔。
例如完整性約束a+b=10墨技,一個事務(wù)改變了a,那么b也應(yīng)隨之改變挎狸。
C:隔離性(Isolation)
一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾扣汪。
D:持續(xù)性/永久性(Durability)
持久性意味著當(dāng)系統(tǒng)或介質(zhì)發(fā)生故障時,確保已提交事務(wù)的更新不能丟失锨匆。即一旦一個事務(wù)提交崭别,DBMS保證它對數(shù)據(jù)庫中數(shù)據(jù)的改變應(yīng)該是永久性的冬筒,即對已提交事務(wù)的更新能恢復(fù)。持久性通過數(shù)據(jù)庫備份和恢復(fù)來保證茅主。
注:事務(wù)是恢復(fù)和并發(fā)控制的基本單位舞痰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市诀姚,隨后出現(xiàn)的幾起案子响牛,更是在濱河造成了極大的恐慌,老刑警劉巖赫段,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呀打,死亡現(xiàn)場離奇詭異,居然都是意外死亡糯笙,警方通過查閱死者的電腦和手機(jī)贬丛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炬丸,“玉大人瘫寝,你說我怎么就攤上這事蜒蕾〕砭妫” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵咪啡,是天一觀的道長首启。 經(jīng)常有香客問我,道長撤摸,這世上最難降的妖魔是什么毅桃? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮准夷,結(jié)果婚禮上钥飞,老公的妹妹穿的比我還像新娘。我一直安慰自己衫嵌,他們只是感情好读宙,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著楔绞,像睡著了一般结闸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酒朵,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天桦锄,我揣著相機(jī)與錄音,去河邊找鬼蔫耽。 笑死结耀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播图甜,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼香伴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了具则?” 一聲冷哼從身側(cè)響起即纲,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎博肋,沒想到半個月后低斋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匪凡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年膊畴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片病游。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡唇跨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衬衬,到底是詐尸還是另有隱情买猖,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布滋尉,位于F島的核電站玉控,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏狮惜。R本人自食惡果不足惜高诺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碾篡。 院中可真熱鬧虱而,春花似錦、人聲如沸开泽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眼姐。三九已至诅迷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間众旗,已是汗流浹背罢杉。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贡歧,地道東北人滩租。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓赋秀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親律想。 傳聞我的和親對象是個殘疾皇子猎莲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容