什么是事務(wù)再膳、事務(wù)特性挺勿、事務(wù)隔離級別、spring事務(wù)傳播特性

1.什么是事務(wù):

事務(wù)是程序中一系列嚴(yán)密的操作喂柒,所有操作執(zhí)行必須成功完成不瓶,否則在每個(gè)操作所做的更改將會(huì)被撤銷禾嫉,這也是事務(wù)的原子性(要么成功,要么失斘秘ぁ)熙参。

2.事務(wù)特性:

事務(wù)特性分為四個(gè):原子性(Atomicity)、一致性(Consistency)麦备、隔離性(Isolation)孽椰、持續(xù)性(Durability)簡稱ACID。

  1. 原子性(Atomicity):事務(wù)是數(shù)據(jù)庫邏輯工作單元凛篙,事務(wù)中包含的操作要么都執(zhí)行成功黍匾,要么都執(zhí)行失敗。

  2. 一致性(Consistency):事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫數(shù)據(jù)從一個(gè)一致性狀態(tài)變到另外一種一致性狀態(tài)呛梆。當(dāng)事務(wù)執(zhí)行成功后就說數(shù)據(jù)庫處于一致性狀態(tài)锐涯。如果在執(zhí)行過程中發(fā)生錯(cuò)誤,這些未完成事務(wù)對數(shù)據(jù)庫所做的修改有一部分已寫入物理數(shù)據(jù)庫填物,這是數(shù)據(jù)庫就處于不一致狀態(tài)纹腌。


  3. 隔離性(Isolation):一個(gè)事務(wù)的執(zhí)行過程中不能影響到其他事務(wù)的執(zhí)行,即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對其他事務(wù)是隔離的融痛,并發(fā)執(zhí)行各個(gè)事務(wù)之間無不干擾壶笼。


  4. 持續(xù)性(Durability):即一個(gè)事務(wù)執(zhí)一旦提交,它對數(shù)據(jù)庫數(shù)據(jù)的改變是永久性的雁刷。之后的其它操作不應(yīng)該對其執(zhí)行結(jié)果有任何影響覆劈。

3.事務(wù)的隔離級別:

事務(wù)的隔離級別也分為四種,由低到高依次分別為:read uncommited(讀未提交)沛励、read commited(讀提交)责语、read repeatable(讀重復(fù))、serializable(序列化)目派,這四個(gè)級別可以逐個(gè)解決臟讀坤候、不可重復(fù)讀、幻讀這幾類問題企蹭。

  1. read uncommited:是最低的事務(wù)隔離級別白筹,它允許另外一個(gè)事務(wù)可以看到這個(gè)事務(wù)未提交的數(shù)據(jù)。


  2. read commited:保證一個(gè)事物提交后才能被另外一個(gè)事務(wù)讀取谅摄。另外一個(gè)事務(wù)不能讀取該事物未提交的數(shù)據(jù)徒河。


  3. repeatable read:這種事務(wù)隔離級別可以防止臟讀,不可重復(fù)讀送漠。但是可能會(huì)出現(xiàn)幻象讀顽照。它除了保證一個(gè)事務(wù)不能被另外一個(gè)事務(wù)讀取未提交的數(shù)據(jù)之外還避免了以下情況產(chǎn)生(不可重復(fù)讀)。


  4. serializable:這是花費(fèi)最高代價(jià)但最可靠的事務(wù)隔離級別闽寡。事務(wù)被處理為順序執(zhí)行代兵。除了防止臟讀尼酿,不可重復(fù)讀之外,還避免了幻象讀植影。


  5. 臟讀裳擎、不可重復(fù)讀、幻象讀概念說明:


臟讀:指當(dāng)一個(gè)事務(wù)正字訪問數(shù)據(jù)何乎,并且對數(shù)據(jù)進(jìn)行了修改句惯,而這種數(shù)據(jù)還沒有提交到數(shù)據(jù)庫中土辩,這時(shí)支救,另外一個(gè)事務(wù)也訪問這個(gè)數(shù)據(jù),然后使用了這個(gè)數(shù)據(jù)拷淘。因?yàn)檫@個(gè)數(shù)據(jù)還沒有提交那么另外一個(gè)事務(wù)讀取到的這個(gè)數(shù)據(jù)我們稱之為臟數(shù)據(jù)各墨。依據(jù)臟數(shù)據(jù)所做的操作肯能是不正確的。


不可重復(fù)讀:指在一個(gè)事務(wù)內(nèi)启涯,多次讀同一數(shù)據(jù)贬堵。在這個(gè)事務(wù)還沒有執(zhí)行結(jié)束,另外一個(gè)事務(wù)也訪問該同一數(shù)據(jù)结洼,那么在第一個(gè)事務(wù)中的兩次讀取數(shù)據(jù)之間黎做,由于第二個(gè)事務(wù)的修改第一個(gè)事務(wù)兩次讀到的數(shù)據(jù)可能是不一樣的,這樣就發(fā)生了在一個(gè)事物內(nèi)兩次連續(xù)讀到的數(shù)據(jù)是不一樣的松忍,這種情況被稱為是不可重復(fù)讀蒸殿。


幻象讀:一個(gè)事務(wù)先后讀取一個(gè)范圍的記錄,但兩次讀取的紀(jì)錄數(shù)不同鸣峭,我們稱之為幻象讀(兩次執(zhí)行同一條 select 語句會(huì)出現(xiàn)不同的結(jié)果宏所,第二次讀會(huì)增加一數(shù)據(jù)行,并沒有說這兩次執(zhí)行是在同一個(gè)事務(wù)中)

spring事務(wù)傳播特性:

事務(wù)傳播行為就是多個(gè)事務(wù)方法相互調(diào)用時(shí)摊溶,事務(wù)如何在這些方法間傳播爬骤。spring支持7種事務(wù)傳播行為:

propagation_requierd:如果當(dāng)前沒有事務(wù),就新建一個(gè)事務(wù)莫换,如果已存在一個(gè)事務(wù)中霞玄,加入到這個(gè)事務(wù)中,這是最常見的選擇拉岁。


propagation_supports:支持當(dāng)前事務(wù)坷剧,如果沒有當(dāng)前事務(wù),就以非事務(wù)方法執(zhí)行膛薛。


propagation_mandatory:使用當(dāng)前事務(wù)听隐,如果沒有當(dāng)前事務(wù),就拋出異常哄啄。


propagation_required_new:新建事務(wù)雅任,如果當(dāng)前存在事務(wù)风范,把當(dāng)前事務(wù)掛起。


propagation_not_supported:以非事務(wù)方式執(zhí)行操作沪么,如果當(dāng)前存在事務(wù)硼婿,就把當(dāng)前事務(wù)掛起。


propagation_never:以非事務(wù)方式執(zhí)行操作禽车,如果當(dāng)前事務(wù)存在則拋出異常寇漫。


propagation_nested:如果當(dāng)前存在事務(wù),則在嵌套事務(wù)內(nèi)執(zhí)行殉摔。如果當(dāng)前沒有事務(wù)州胳,則執(zhí)行與propagation_required類似的操作

Spring 默認(rèn)的事務(wù)傳播行為是 PROPAGATION_REQUIRED,它適合于絕大多數(shù)的情況逸月。假設(shè) ServiveX#methodX() 都工作在事務(wù)環(huán)境下(即都被 Spring 事務(wù)增強(qiáng)了)栓撞,假設(shè)程序中存在如下的調(diào)用鏈:Service1#method1()->Service2#method2()->Service3#method3(),那么這 3 個(gè)服務(wù)類的 3 個(gè)方法通過 Spring 的事務(wù)傳播機(jī)制都工作在同一個(gè)事務(wù)中碗硬。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓤湘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恩尾,更是在濱河造成了極大的恐慌弛说,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翰意,死亡現(xiàn)場離奇詭異木人,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)猎物,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門虎囚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蔫磨,你說我怎么就攤上這事淘讥。” “怎么了堤如?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵蒲列,是天一觀的道長。 經(jīng)常有香客問我搀罢,道長蝗岖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任榔至,我火速辦了婚禮抵赢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己铅鲤,他們只是感情好划提,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著邢享,像睡著了一般鹏往。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上骇塘,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天伊履,我揣著相機(jī)與錄音,去河邊找鬼款违。 笑死唐瀑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奠货。 我是一名探鬼主播介褥,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼递惋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溢陪,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤萍虽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后形真,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杉编,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年咆霜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了邓馒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛾坯,死狀恐怖光酣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脉课,我是刑警寧澤救军,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站倘零,受9級特大地震影響唱遭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呈驶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一拷泽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦司致、人聲如沸订晌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锈拨。三九已至,卻和暖如春羹唠,著一層夾襖步出監(jiān)牢的瞬間奕枢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工佩微, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缝彬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓哺眯,卻偏偏與公主長得像谷浅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子奶卓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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