事務(wù)的四大特性(1)_概念

當(dāng)我們接觸數(shù)據(jù)庫系統(tǒng)相關(guān)的知識,或者涉及到電商先匪、支付相關(guān)的系統(tǒng)設(shè)計(jì)捎拯,通常會聽到"事務(wù)"這個詞。

關(guān)于事務(wù)的定義

事務(wù)(Transaction) 是什么呢:
淳樸的理解毯欣,一系列操作馒过,完成一件目標(biāo),事務(wù)就是這一系列操作的序列捆綁在一起的整體酗钞。

為什么需要事務(wù)這個定義呢:
我們看一個轉(zhuǎn)賬的過程:
有一堆轉(zhuǎn)賬請求: 張三給李四轉(zhuǎn)100塊腹忽,王麻子給張二嘎轉(zhuǎn)50塊
對于每筆轉(zhuǎn)賬請求,系統(tǒng)需要依次做如如下操作
1. 確認(rèn)張三賬戶有至少一百塊
2. 給張三的賬戶減少100塊
3. 李四的賬戶增加100塊
4. 這一條轉(zhuǎn)賬請求標(biāo)記上砚作,已處理

如果因?yàn)橄到y(tǒng)異常窘奏,4個操作任何一個沒有寫入成功,那賬本一定會出錯了葫录,
所以蔼夜,這4個操作,被我們定義為了一個事務(wù)

事務(wù)的四大特性

四個特性:原子性压昼,一致性求冷,隔離性,持久性

和其他一些文章不同窍霞,我們這里先明確匠题,一致性是終極目標(biāo),而非手段但金,我們先來看一致性的定義:
(很多同學(xué)韭山,包括我一開始覺得原子性和一致性是一回事,就是沒有明白,一致性是目標(biāo)钱磅,而非手段)

特性一: 一致性

定義:一旦事務(wù)的所有操作結(jié)束梦裂,事務(wù)就被提交。然后數(shù)據(jù)和資源將處于遵循業(yè)務(wù)規(guī)則的一致狀態(tài)盖淡。
大白話就是說:涉及事務(wù)的系統(tǒng)年柠,各種操作提交下,業(yè)務(wù)邏輯要正確

接下來褪迟,為了解決破壞一致性的若干問題冗恨,我們依次引入其他三個特性

問題一:前文提到的4個操作,操作到一半系統(tǒng)掛了味赃,丟失了若干操作步驟掀抹,那么數(shù)據(jù)庫的數(shù)據(jù)就出錯了,一致性被破壞了
怎么解決這個問題呢心俗,引入原子性的概念

特性二: 原子性

定義:事務(wù)是一個包含一系列操作的原子操作傲武。事務(wù)的原子性確保這些操作全部完成或者全部失敗。

然而城榛,情況沒那么簡單:
問題二: 并發(fā)怎么辦
假設(shè)同時兩個轉(zhuǎn)賬請求過來了:A. 張三給李四轉(zhuǎn)100塊 B. 張三給王五轉(zhuǎn)100塊
兩個線程同時處理兩個請求
大部分軟件工程師谱轨,大概都能看出有問題,線程會沖突吠谢,就會帶來如下的若干問題:


A. 覆蓋性問題
第一類更新丟失
A事務(wù)撤銷時土童,把已經(jīng)提交的B事務(wù)的更新數(shù)據(jù)覆蓋了。
第二類更新丟失
B事務(wù)覆蓋A事務(wù)已經(jīng)提交的數(shù)據(jù)工坊,造成A事務(wù)所做操作丟失献汗。

B. 一致性問題
臟讀:事務(wù) A 讀取了事務(wù) B 未提交的數(shù)據(jù),并在這個基礎(chǔ)上又做了其他操作王污。
幻讀:符合查詢條件的數(shù)據(jù)集罢吃,在事務(wù)執(zhí)行過程中發(fā)生了變化
例子: 需要給所有的用戶贈送10個金幣,需要以下幾步:
1. 讀出所有用戶列表
2. 給這些用戶增加10個金幣
3. 提交事務(wù)
=> 問題: 在處理過程中昭齐,如果有新用戶進(jìn)來尿招,他們得不到10金幣的贈送,那么阱驾,本次事務(wù)操作操作不符合事務(wù)預(yù)期
不可重復(fù)讀:在事務(wù)的執(zhí)行過程中就谜,已經(jīng)讀到的數(shù)據(jù)的值,發(fā)生了變化(可重復(fù)讀:讀多少次得到的數(shù)據(jù)都是一樣的)
例子:
在事務(wù)A中里覆,讀取到張三的工資為5000丧荐,操作沒有完成,事務(wù)還沒提交喧枷。
與此同時虹统,事務(wù)B把張三的工資改為8000弓坞,并提交了事務(wù)。
隨后车荔,在事務(wù)A中渡冻,再次讀取張三的工資,此時工資變?yōu)?000忧便。在一個事務(wù)中前后兩次讀取的結(jié)果并不致族吻。
=> 問題:如果是類似于銀行的對賬系統(tǒng),這類不一致性帶來的問題會十分明顯

幻讀和不可重復(fù)讀的理解:
我們操作一個事務(wù)茬腿,涉及數(shù)據(jù)集A, 在整個事務(wù)操作過程中,如果數(shù)據(jù)集A存在被其他事務(wù)提交修改的可能宜雀,則會產(chǎn)生讀取不一致性
即使所有寫入系統(tǒng)的數(shù)據(jù)切平,都是遵循原子性的事務(wù)操作完成;
然而讀到的系統(tǒng)數(shù)據(jù)狀態(tài)辐董,和事務(wù)操作過程中面對的系統(tǒng)數(shù)據(jù)狀態(tài)存在不一致的可能悴品,導(dǎo)致事務(wù)操作不符合業(yè)務(wù)預(yù)期邏輯


更多沖突的具體場景參見:?參考資料【1】

我們很容易想到一個方法,那就是對所有數(shù)據(jù)整體加一把鎖简烘,一次只能執(zhí)行一個事務(wù)~
Yes, 問題解決了苔严,但是性能沒了,一個事務(wù)可能要操作n步孤澎,假設(shè)耗時100毫秒届氢,天哪,一天只能處理100萬不到的交易量

為了解決一致性和性能的矛盾覆旭,前輩們引入了隔離性的概念退子,用不同級別的隔離性,解決并發(fā)和一致性型将、性能的矛盾

特性三: 隔離性

定義:引入的隔離機(jī)制寂祥,并發(fā)的事務(wù)操作,不會相互影響事務(wù)的正確性七兜,進(jìn)而避免事務(wù)的相互影響丸凭,破壞整個系統(tǒng)的一致性。
=> 對一個事務(wù)來說腕铸,除非它所涉及的數(shù)據(jù)是靜態(tài)不變的惜犀,否則這個事務(wù)應(yīng)該對所有數(shù)據(jù)無損的失敗/回滾。

為了解決隔離性的需求狠裹,前人抽象出了4個隔離級別向拆,本文先列出來,下一篇文章講實(shí)現(xiàn)酪耳,那么對4種隔離級別浓恳,就更加清晰了

特性四:持久性

持久性是比較好理解的刹缝,當(dāng)我們執(zhí)行一條 insert 語句后,數(shù)據(jù)庫必須要保證有一條數(shù)據(jù)永久地存放在磁盤中颈将,這個也算事務(wù)的一條特性梢夯。
持久性,更多的關(guān)注的是系統(tǒng)容災(zāi)性晴圾,不會因?yàn)榈讓酉到y(tǒng)的異常颂砸、崩潰、掉電導(dǎo)致操作的丟失


參考資料

【1】https://blog.csdn.net/lovesomnus/article/details/44459675

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末死姚,一起剝皮案震驚了整個濱河市人乓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌都毒,老刑警劉巖色罚,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異账劲,居然都是意外死亡戳护,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門瀑焦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腌且,“玉大人,你說我怎么就攤上這事榛瓮∑潭” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵禀晓,是天一觀的道長柄粹。 經(jīng)常有香客問我,道長匆绣,這世上最難降的妖魔是什么驻右? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮崎淳,結(jié)果婚禮上堪夭,老公的妹妹穿的比我還像新娘。我一直安慰自己拣凹,他們只是感情好森爽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嚣镜,像睡著了一般爬迟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上菊匿,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天付呕,我揣著相機(jī)與錄音计福,去河邊找鬼。 笑死徽职,一個胖子當(dāng)著我的面吹牛象颖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姆钉,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼说订,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了潮瓶?” 一聲冷哼從身側(cè)響起陶冷,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毯辅,沒想到半個月后埂伦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悉罕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年赤屋,在試婚紗的時候發(fā)現(xiàn)自己被綠了立镶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壁袄。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖媚媒,靈堂內(nèi)的尸體忽然破棺而出嗜逻,到底是詐尸還是另有隱情,我是刑警寧澤缭召,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布栈顷,位于F島的核電站,受9級特大地震影響嵌巷,放射性物質(zhì)發(fā)生泄漏萄凤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一搪哪、第九天 我趴在偏房一處隱蔽的房頂上張望靡努。 院中可真熱鬧,春花似錦晓折、人聲如沸惑朦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漾月。三九已至,卻和暖如春胃珍,著一層夾襖步出監(jiān)牢的瞬間梁肿,已是汗流浹背蜓陌。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栈雳,地道東北人护奈。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像哥纫,于是被迫代替她去往敵國和親霉旗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

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

  • 其實(shí)這個知識點(diǎn)比較單一蛀骇。但是Q崦搿!擅憔!我為什么一起講呢鸵闪?因?yàn)橹敖佑|過,但是說實(shí)話開發(fā)一年多都沒用過這個暑诸。上次面試問我...
    唯有努力不欺人丶閱讀 1,686評論 0 10
  • 數(shù)據(jù)庫中經(jīng)常被問到四大特性和隔離級別蚌讼,一般都是涉及到概念性問題,在此做一些整理總結(jié)个榕,方便理解篡石。 1、事務(wù)的隔離級別...
    Hughman閱讀 1,879評論 0 5
  • 1西采、事務(wù)簡介 ? 事務(wù)(Transaction)是訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項(xiàng)的一個程序執(zhí)行單元(u...
    逗逼程序員閱讀 674評論 0 1
  • 母親卑微如青苔莊嚴(yán)如晨曦 柔如江南的水聲 堅(jiān)如千年的寒玉 舉目是皓皓明月 垂首是莽莽大地 每當(dāng)大雨傾盆 那條泥濘的...
    琴瑟琵琶玨閱讀 258評論 0 4
  • 今天又考試了凰萨,還是不怎么好啊械馆!下午放學(xué)后的作業(yè)胖眷,自己不知道去做,每天還得我督促著才去做霹崎。哎珊搀!啥時候能自己主動...
    一年級一班劉佳怡閱讀 104評論 0 0