Spring事務管理(一)什麼是事務?

本文連接:https://blog.csdn.net/gloomy_114/article/details/62048335
事務的概念
併發事務致使的問題
咱們在實際業務場景中,常常會遇到數據頻繁修改讀取的問題。在同一時刻,不一樣的業務邏輯對同一個表數據進行修改,這種衝突極可能形成數據不可挽回的錯亂,因此咱們須要用事務來對數據進行管理。
1
1. 事務的概念
事務必須服從ACID原則。ACID指的是原子性(atomicity)、一致性(consistency)、隔離性(isolation)和持久性(durability)。
通俗理解,事務其實就是一系列指令的集合。
1
2
原子性:操做這些指令時,要麼所有執行成功,要麼所有不執行。只要其中一個指令執行失敗,全部的指令都執行失敗,數據進行回滾,回到執行指令前的數據狀態。
一致性:事務的執行使數據從一個狀態轉換爲另外一個狀態,可是對於整個數據的完整性保持穩定。
隔離性:在該事務執行的過程當中,不管發生的任何數據的改變都應該只存在於該事務之中,對外界不存在任何影響。只有在事務肯定正確提交以後,纔會顯示該事務對數據的改變。其餘事務才能獲取到這些改變後的數據。
持久性:當事務正確完成後,它對於數據的改變是永久性的。
2. 併發事務致使的問題
在許多事務處理同一個數據時,若是沒有采起有效的隔離機制,那麼併發處理數據時,會帶來一些的問題。
1
第一類丟失更新:撤銷一個事務時,把其餘事務已提交的更新數據覆蓋。程序員

小明去銀行櫃檯存錢,他的帳戶裏原來的餘額爲100元,如今打算存入100元。在他存錢的過程當中,銀行年費扣了5元,餘額只剩95元。忽然他又想着這100元要用來請女友看電影吃飯,不打算存了。在他撤回存錢操做後,餘額依然爲他存錢以前的100元。因此那5塊錢到底扣了誰的?併發

髒讀:一個事務讀取到另外一個事務未提交的更新數據。atom

小明的銀行卡餘額裏有100元。如今他打算用手機點一個外賣飲料,須要付款10元。可是這個時候,他的女友看中了一件衣服95元,她正在使用小明的銀行卡付款。因而小明在付款的時候,程序後臺讀取到他的餘額只有5塊錢了,根本不夠10元,因此係統拒絕了他的交易,告訴餘額不足。可是小明的女友最後由於密碼錯誤,沒法進行交易。小明很是鬱悶,明明銀行卡里還有100元,怎麼會餘額不足呢?(他女友更鬱悶。。。).net

幻讀也叫虛讀:一個事務執行兩次查詢,第二次結果集包含第一次中沒有或某些行已經被刪除的數據,形成兩次結果不一致,只是另外一個事務在這兩次查詢中間插入或刪除了數據形成的。blog

公司財務A在進行員工薪資覈算業務,須要對小明的工資進行計算並錄入系統,必須查詢兩次明細信息,而後將後一次的明細信息計算總數出來。財務在第一次明細查詢時,基本工資2000元,全勤獎1000元,提成2000元,共計5000元。在進行第二次計算時,財務B忽然接到通知,須要把下個月的節日福利也在這個月的工資中發放,每人100元。因而財務B在每一個人的工資明細中又加了一條節日福利100元。而此時財務A得到第二次查詢小明的工資明細後,發現工資明細變成了4條數據,總數是5100元。兩次計算結果相差100元,財務A奇怪這多出來的一條明細100元是哪裏來的呢?(都怪財務B不告訴A。。。)事務

不可重複讀:一個事務兩次讀取同一行的數據,結果獲得不一樣狀態的結果,中間正好另外一個事務更新了該數據,兩次結果相異,不可被信任。ci

小明在手機上購買起購價爲1W元理財產品。系統首先要判斷他的餘額夠不夠購買理財產品,若是足夠再獲取當前的餘額,進行申請。系統第一次讀取到小明的餘額還剩1W元,恰好足夠購買產品。可是這個時候恰好他女友又看中了一個包包5000元,此次密碼終於不會再錯誤的女友堅決果斷刷了小明的銀行卡買下了這個包包。可是這個系統恰好在進行第二次確認,發現小明的餘額上只有5000元,根本不夠購買。因而系統很生氣,拒絕了小明的購買行爲,告訴他,你真是個騙子!!!產品

第二類丟失更新:是不可重複讀的特殊狀況。若是兩個事物都讀取同一行,而後兩個都進行寫操做,並提交,第一個事物所作的改變就會丟失。it

小明和女友一塊兒去逛街。女友看中了一支口紅,(對,女友就是用來表現買買買的)小明大方的掏出了本身的銀行卡,告訴女友:親愛的,隨便刷,隨便買,我坐着等你。而後小明就坐在商城座椅上玩手機,等着女友。這個時候,程序員的聊天羣裏有人推薦了一本書,小明一看,哎呀,真是本好書,仍是限量發行呢,我必定更要買到。因而小明趕忙找到購買渠道,進行付款操做。而同時,小明的女友也在不亦樂乎的買買買,他們同時進行了一筆交易操做,可是這個時候銀行系統出了問題,當他們都付款成功後,卻發現,銀行只扣了小明的買書錢,卻沒有扣去女友此時交易的錢。哈哈哈,小明真是太開心了!
 ———————————————— 
版權聲明:本文爲CSDN博主「MoonXiao」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/gloomy_114/article/details/62048335io

相關文章
相關標籤/搜索