事務(wù)基礎(chǔ)理論

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


事務(wù)的特征(ACID)

  • 原子性

要么一起成功要么一起失敗

  • 一致性

一致性是指事務(wù)必須使數(shù)據(jù)庫從一個一致性狀態(tài)變換到另一個一致性狀態(tài)磁玉,也就是說一個事務(wù)執(zhí)行之前和執(zhí)行之后都必須處于一致性狀態(tài)软啼。

  • 隔離性

隔離性是當(dāng)多個用戶并發(fā)訪問數(shù)據(jù)庫時毅厚,比如操作同一張表時,數(shù)據(jù)庫為每一個用戶開啟的事務(wù),不能被其他事務(wù)的操作所干擾,多個并發(fā)事務(wù)之間要相互隔離。

  • 持久性

持久性是指一個事務(wù)一旦被提交了窜护,那么對數(shù)據(jù)庫中的數(shù)據(jù)的改變就是永久性的效斑,即便是在數(shù)據(jù)庫系統(tǒng)遇到故障的情況下也不會丟失提交事務(wù)的操作。

數(shù)據(jù)庫中3種常見問題

  1. 臟讀:臟讀就是指當(dāng)一個事務(wù)正在訪問數(shù)據(jù)柱徙,并且對數(shù)據(jù)進行了修改缓屠,而這種修改還沒有提交到數(shù)據(jù)庫中,這時护侮,另外一個事務(wù)也訪問這個數(shù)據(jù)敌完,然后使用了這個數(shù)據(jù)。

  2. 不可重復(fù)讀 :是指在一個事務(wù)內(nèi)羊初,多次讀同一數(shù)據(jù)滨溉。在這個事務(wù)還沒有結(jié)束時,另外一個事務(wù)也訪問該同一數(shù)據(jù)长赞。那么晦攒,在第一個事務(wù)中的兩 次讀數(shù)據(jù)之間,由于第二個事務(wù)的修改得哆,那么第一個事務(wù)兩次讀到的的數(shù)據(jù)可能是不一樣的脯颜。這樣就發(fā)生了在一個事務(wù)內(nèi)兩次讀到的數(shù)據(jù)是不一樣的,因此稱為是不 可重復(fù)讀等太。例如抗愁,一個編輯人員兩次讀取同一文檔谭期,但在兩次讀取之間,作者重寫了該文檔矾芙。當(dāng)編輯人員第二次讀取文檔時,文檔已更改近上。原始讀取不可重復(fù)蠕啄。如果 只有在作者全部完成編寫后編輯人員才可以讀取文檔,則可以避免該問題戈锻。

  3. 幻讀 : 是指當(dāng)事務(wù)不是獨立執(zhí)行時發(fā)生的一種現(xiàn)象歼跟,例如第一個事務(wù)對一個表中的數(shù)據(jù)進行了修改,這種修改涉及到表中的全部數(shù)據(jù)行格遭。 同時哈街,第二個事務(wù)也修改這個表中的數(shù)據(jù),這種修改是向表中插入一行新數(shù)據(jù)拒迅。那么骚秦,以后就會發(fā)生操作第一個事務(wù)的用戶發(fā)現(xiàn)表中還有沒有修改的數(shù)據(jù)行她倘,就好象 發(fā)生了幻覺一樣。例如作箍,一個編輯人員更改作者提交的文檔硬梁,但當(dāng)生產(chǎn)部門將其更改內(nèi)容合并到該文檔的主復(fù)本時,發(fā)現(xiàn)作者已將未編輯的新材料添加到該文檔中胞得。 如果在編輯人員和生產(chǎn)部門完成對原始文檔的處理之前荧止,任何人都不能將新材料添加到文檔中,則可以避免該問題阶剑。

4種隔離級別

數(shù)據(jù)庫事務(wù)的隔離級別有4個跃巡,由低到高依次為

  • Read uncommitted

可能出現(xiàn)臟讀和不可重復(fù)讀和幻讀

  • Read committed

可能出現(xiàn)不可重復(fù)讀和幻讀
保證一個事務(wù)修改的數(shù)據(jù)提交后才能被另外一個事務(wù)讀取。另外一個事務(wù)不能讀取該事務(wù)未提交的數(shù)據(jù)
這是大多數(shù)數(shù)據(jù)庫系統(tǒng)的默認(rèn)隔離級別(但不是MySQL默認(rèn)的)
它滿足了隔離的簡單定義:一個事務(wù)只能看見已經(jīng)提交事務(wù)所做的改變
這種隔離級別出現(xiàn)的問題是——不可重復(fù)讀(Nonrepeatable Read):不可重復(fù)讀意味著我們在同一個事務(wù)中執(zhí)行完全相同的select語句時可能看到不一樣的結(jié)果牧愁。

  • Repeatable read

可能出現(xiàn)幻讀
這種事務(wù)隔離級別可以防止臟讀素邪,不可重復(fù)讀。但是可能出現(xiàn)幻像讀猪半。
它除了保證一個事務(wù)不能讀取另一個事務(wù)未提交的數(shù)據(jù)外兔朦,還保證了避免下面的情況產(chǎn)生(不可重復(fù)讀)。

  • Serializable

這是花費最高代價但是最可靠的事務(wù)隔離級別磨确。事務(wù)被處理為順序執(zhí)行烘绽。除了防止臟讀,不可重復(fù)讀外俐填,還避免了幻像讀安接。

7種傳播行為

  1. PROPAGATION_REQUIRED
    如果當(dāng)前沒有事務(wù),就創(chuàng)建一個新事務(wù)英融,如果當(dāng)前存在事務(wù)盏檐,就加入該事務(wù),該設(shè)置是最常用的設(shè)置驶悟。
  1. PROPAGATION_SUPPORTS:支持當(dāng)前事務(wù)胡野,如果當(dāng)前存在事務(wù),就加入該事務(wù)痕鳍,如果當(dāng)前不存在事務(wù)硫豆,就以非事務(wù)執(zhí)行×簦‘
  1. PROPAGATION_MANDATORY:支持當(dāng)前事務(wù)熊响,如果當(dāng)前存在事務(wù),就加入該事務(wù)诗赌,如果當(dāng)前不存在事務(wù)汗茄,就拋出異常。
  1. PROPAGATION_REQUIRES_NEW:創(chuàng)建新事務(wù)铭若,無論當(dāng)前存不存在事務(wù)洪碳,都創(chuàng)建新事務(wù)递览。
  1. PROPAGATION_NOT_SUPPORTED:以非事務(wù)方式執(zhí)行操作,如果當(dāng)前存在事務(wù)瞳腌,就把當(dāng)前事務(wù)掛起绞铃。
  1. PROPAGATION_NEVER:以非事務(wù)方式執(zhí)行,如果當(dāng)前存在事務(wù)嫂侍,則拋出異常儿捧。
  1. PROPAGATION_NESTED:如果當(dāng)前有事務(wù),就嵌套在事務(wù)內(nèi)執(zhí)行吵冒,如果沒有事務(wù),就執(zhí)行與PROPAGATION_REQUIRED相似的操作西剥。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痹栖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瞭空,更是在濱河造成了極大的恐慌揪阿,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咆畏,死亡現(xiàn)場離奇詭異南捂,居然都是意外死亡,警方通過查閱死者的電腦和手機旧找,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門溺健,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钮蛛,你說我怎么就攤上這事鞭缭。” “怎么了魏颓?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵岭辣,是天一觀的道長。 經(jīng)常有香客問我甸饱,道長沦童,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任叹话,我火速辦了婚禮偷遗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驼壶。我一直安慰自己鹦肿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布辅柴。 她就那樣靜靜地躺著箩溃,像睡著了一般瞭吃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涣旨,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天歪架,我揣著相機與錄音,去河邊找鬼霹陡。 笑死和蚪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烹棉。 我是一名探鬼主播攒霹,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼浆洗!你這毒婦竟也來了催束?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤伏社,失蹤者是張志新(化名)和其女友劉穎抠刺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摘昌,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡速妖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了聪黎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罕容。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖稿饰,靈堂內(nèi)的尸體忽然破棺而出杀赢,到底是詐尸還是另有隱情,我是刑警寧澤湘纵,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布脂崔,位于F島的核電站,受9級特大地震影響梧喷,放射性物質(zhì)發(fā)生泄漏砌左。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一铺敌、第九天 我趴在偏房一處隱蔽的房頂上張望汇歹。 院中可真熱鬧,春花似錦偿凭、人聲如沸产弹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痰哨。三九已至胶果,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間斤斧,已是汗流浹背早抠。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留撬讽,地道東北人蕊连。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像游昼,于是被迫代替她去往敵國和親甘苍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

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