數(shù)據(jù)庫事務&spring事務

http://blog.csdn.net/bao19901210/article/details/41724355本地事務

1 首先什么是數(shù)據(jù)庫事物:

原子性(Atomicity):事務是一個原子操作际乘,由一系列動作組成谱煤。事務的原子性確保動作要么全部完成视译,要么完全不起作用惠窄。

一致性(Consistency):一旦事務完成(不管成功還是失敗)室奏,系統(tǒng)必須確保它所建模的業(yè)務處于一致的狀態(tài)充坑,而不會是部分完成部分失敗拆融。在現(xiàn)實中的數(shù)據(jù)不應該被破壞。

隔離性(Isolation):可能有許多事務會同時處理相同的數(shù)據(jù)唁情,因此每個事務都應該與其他事務隔離開來疑苔,防止數(shù)據(jù)損壞。

持久性(Durability):一旦事務完成荠瘪,無論發(fā)生什么系統(tǒng)錯誤夯巷,它的結果都不應該受到影響,這樣就能從任何系統(tǒng)崩潰中恢復過來哀墓。通常情況下趁餐,事務的結果被寫到持久化存儲器中。


Spring事務

我們本地的TX事物:定義是兩階段提交的篮绰,為了提高操作后雷,把事務的串行變成并行 所以出現(xiàn)了 事物的隔離級別,其實本質(zhì)原因是讀讀吠各,讀寫臀突,寫讀,寫寫贾漏,操作引起的不一致候学,我們需要通過隔離級別來控制一致性。

事務隔離級別

隔離級別是指若干個并發(fā)的事務之間的隔離程度纵散。TransactionDefinition 接口中定義了五個表示隔離級別的常量:

TransactionDefinition.ISOLATION_DEFAULT:這是默認值梳码,表示使用底層數(shù)據(jù)庫的默認隔離級別隐圾。對大部分數(shù)據(jù)庫而言,通常這值就是TransactionDefinition.ISOLATION_READ_COMMITTED掰茶。

TransactionDefinition.ISOLATION_READ_UNCOMMITTED:該隔離級別表示一個事務可以讀取另一個事務修改但還沒有提交的數(shù)據(jù)暇藏。該級別不能防止臟讀,不可重復讀和幻讀濒蒋,因此很少使用該隔離級別盐碱。比如PostgreSQL實際上并沒有此級別。

TransactionDefinition.ISOLATION_READ_COMMITTED:該隔離級別表示一個事務只能讀取另一個事務已經(jīng)提交的數(shù)據(jù)沪伙。該級別可以防止臟讀瓮顽,這也是大多數(shù)情況下的推薦值。

TransactionDefinition.ISOLATION_REPEATABLE_READ:該隔離級別表示一個事務在整個過程中可以多次重復執(zhí)行某個查詢焰坪,并且每次返回的記錄都相同趣倾。該級別可以防止臟讀和不可重復讀。

TransactionDefinition.ISOLATION_SERIALIZABLE:所有的事務依次逐個執(zhí)行某饰,這樣事務之間就完全不可能產(chǎn)生干擾儒恋,也就是說,該級別可以防止臟讀黔漂、不可重復讀以及幻讀诫尽。但是這將嚴重影響程序的性能。通常情況下也不會用到該級別炬守。

事務為什么需要隔離級別牧嫉,如果沒有隔離級別會是什么樣子的?

1.如果沒有事物我們需要跟多的回話和數(shù)據(jù)庫交互减途,只能串行酣藻,保證事務

2.數(shù)據(jù)庫的就是讀寫,包括讀讀鳍置,讀寫辽剧,寫讀,寫寫税产,如果我們資源不允許建立很多的回話怕轿,那怎么辦,就需要并行辟拷,就是可以在一個會話中可以同時撞羽,讀讀,讀寫衫冻,寫讀诀紊,寫寫,

1.1如果說;寫的時候可以在讀取時看到隅俘,那就是READ_UNCOMMITTED

1.2:如果說1.1 操作失敗了邻奠,讀取到的數(shù)據(jù)有問題到推,就會出現(xiàn)臟讀的,所以我們出現(xiàn)了READ_COMMITTED惕澎,保存讀取的是commit過的

1.3:每次讀取同一個事務,在多次讀取中颜骤,有可能會發(fā)生改變唧喉,類似版本的東東,給人的感覺出現(xiàn)錯覺了忍抽,所以出現(xiàn)了REPEATABLE_READ 幻讀

1.4為了避免幻讀我們出現(xiàn)了SERIALIZABLE就是吧并行的事務操作變成了 串行的

解決了 事務的一致性問題?

下面是多線程八孝,其實就是事務的并發(fā)問題,就是傳播性

事務傳播行為

所謂事務的傳播行為是指鸠项,如果在開始當前事務之前干跛,一個事務上下文已經(jīng)存在,此時有若干選項可以指定一個事務性方法的執(zhí)行行為祟绊。在TransactionDefinition定義中包括了如下幾個表示傳播行為的常量:

TransactionDefinition.PROPAGATION_REQUIRED:如果當前存在事務楼入,則加入該事務;如果當前沒有事務牧抽,則創(chuàng)建一個新的事務嘉熊。這是默認值。

TransactionDefinition.PROPAGATION_REQUIRES_NEW:創(chuàng)建一個新的事務扬舒,如果當前存在事務阐肤,則把當前事務掛起。

TransactionDefinition.PROPAGATION_SUPPORTS:如果當前存在事務讲坎,則加入該事務孕惜;如果當前沒有事務,則以非事務的方式繼續(xù)運行晨炕。

TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事務方式運行衫画,如果當前存在事務,則把當前事務掛起府瞄。

TransactionDefinition.PROPAGATION_NEVER:以非事務方式運行碧磅,如果當前存在事務,則拋出異常遵馆。

TransactionDefinition.PROPAGATION_MANDATORY:如果當前存在事務鲸郊,則加入該事務;如果當前沒有事務货邓,則拋出異常秆撮。

TransactionDefinition.PROPAGATION_NESTED:如果當前存在事務,則創(chuàng)建一個事務作為當前事務的嵌套事務來運行换况;如果當前沒有事務职辨,則該取值等價于TransactionDefinition.PROPAGATION_REQUIRED盗蟆。

事務的傳播

事務超時

所謂事務超時,就是指一個事務所允許執(zhí)行的最長時間舒裤,如果超過該時間限制但事務還沒有完成喳资,則自動回滾事務。在 TransactionDefinition 中以 int 的值來表示超時時間腾供,其單位是秒仆邓。

默認設置為底層事務系統(tǒng)的超時值,如果底層數(shù)據(jù)庫事務系統(tǒng)沒有設置超時值伴鳖,那么就是none节值,沒有超時限制。

事務只讀屬性

只讀事務用于客戶代碼只讀但不修改數(shù)據(jù)的情形榜聂,只讀事務用于特定情景下的優(yōu)化搞疗,比如使用Hibernate的時候。

默認為讀寫事務须肆。

@Transactional屬性

http://blog.csdn.net/bao19901210/article/details/41724355


事務失效http://blog.csdn.net/jiesa/article/details/53438342

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匿乃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子休吠,更是在濱河造成了極大的恐慌扳埂,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘤礁,死亡現(xiàn)場離奇詭異阳懂,居然都是意外死亡,警方通過查閱死者的電腦和手機柜思,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門岩调,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赡盘,你說我怎么就攤上這事号枕。” “怎么了陨享?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵葱淳,是天一觀的道長。 經(jīng)常有香客問我抛姑,道長赞厕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任定硝,我火速辦了婚禮皿桑,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己诲侮,他們只是感情好镀虐,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沟绪,像睡著了一般刮便。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绽慈,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天诺核,我揣著相機與錄音,去河邊找鬼久信。 笑死,一個胖子當著我的面吹牛漓摩,可吹牛的內(nèi)容都是我干的裙士。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼管毙,長吁一口氣:“原來是場噩夢啊……” “哼腿椎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起夭咬,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤啃炸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后卓舵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體南用,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年掏湾,在試婚紗的時候發(fā)現(xiàn)自己被綠了裹虫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡融击,死狀恐怖筑公,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尊浪,我是刑警寧澤匣屡,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站拇涤,受9級特大地震影響捣作,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜工育,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一虾宇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧如绸,春花似錦嘱朽、人聲如沸旭贬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稀轨。三九已至,卻和暖如春岸军,著一層夾襖步出監(jiān)牢的瞬間奋刽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工艰赞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留佣谐,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓方妖,卻偏偏與公主長得像狭魂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子党觅,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

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