MySQL事務(wù)

介紹

事務(wù)(Transaction)是數(shù)據(jù)庫用來保證數(shù)據(jù)的完整性---要么都做修改,要么都不做召噩。

特性:ACID
  • 原子性(atomicity):事務(wù)是不可分割的工作的單位敷鸦。
  • 一致性(consistency):事務(wù)將數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)變?yōu)橄乱环N狀態(tài)
  • 隔離性(isolation):多個事務(wù)并發(fā)執(zhí)行,單獨不影響
  • 持久性(durability):提交的事務(wù)的結(jié)果或效果的系統(tǒng)出現(xiàn)故障的情況下仍然存在

實現(xiàn)

事務(wù)隔離性由鎖實現(xiàn)万矾;原子性伤疙、一致性银酗、持久性通過數(shù)據(jù)庫的redo和undo實現(xiàn)

1 redo

記錄的是新數(shù)據(jù)的備份。在事務(wù)提交前徒像,只要將Redo Log持久化即可黍特,不需要將數(shù)據(jù)持久化。當系統(tǒng)崩潰時锯蛀,雖然數(shù)據(jù)沒有持久化灭衷,但是RedoLog已經(jīng)持久化。系統(tǒng)可以根據(jù)RedoLog的內(nèi)容旁涤,將所有數(shù)據(jù)恢復到最新的狀態(tài)

2 undo

Undo Log 是為了實現(xiàn)事務(wù)的原子性翔曲,在MySQL數(shù)據(jù)庫InnoDB存儲引擎中,還用Undo Log來實現(xiàn)多版本并發(fā)控制(簡稱:MVCC)

在操作任何數(shù)據(jù)之前劈愚,首先將數(shù)據(jù)備份到一個地方(這個存儲數(shù)據(jù)備份的地方稱為UndoLo)瞳遍。然后進行數(shù)據(jù)的修改。如果出現(xiàn)了錯誤或者用戶執(zhí)行了ROLLBACK語句菌羽,系統(tǒng)可以利用UndoLog中的備份將數(shù)據(jù)恢復到事務(wù)開始之前的狀態(tài)


事務(wù)控制語句

在mysql命令行的默認下掠械,事務(wù)都是自動提交的,sql語句提交后馬上會執(zhí)行commit操作。因此開啟一個事務(wù)必須使用begin猾蒂,start transaction均唉,或者執(zhí)行 set autocommit=0,已禁用當前會話的自動提交

事務(wù)控制語句:

  • start transction | begin : 顯示的開啟一個事務(wù)
  • commit 事務(wù)提交
  • rollback 事務(wù)回滾

事務(wù)隔離級別

SQL標準定義了4類隔離級別肚菠,包括了一些具體規(guī)則浸卦,用來限定事務(wù)內(nèi)外的哪些改變是可見的,哪些是不可見的案糙。低級別的隔離級一般支持更高的并發(fā)處理,并擁有更低的系統(tǒng)開銷

Read Uncommitted(讀取未提交內(nèi)容)
在該隔離級別靴庆,所有事務(wù)都可以看到其他未提交事務(wù)的執(zhí)行結(jié)果时捌。本隔離級別很少用于實際應用,因為它的性能也不比其他級別好多少炉抒。讀取未提交的數(shù)據(jù)奢讨,也被稱之為臟讀(Dirty Read)

Read Committed(讀取提交內(nèi)容)
這是大多數(shù)數(shù)據(jù)庫系統(tǒng)的默認隔離級別(但不是MySQL默認的)。它滿足了隔離的簡單定義:一個事務(wù)只能看見已經(jīng)提交事務(wù)所做的改變焰薄。這種隔離級別 也支持所謂的不可重復讀(Nonrepeatable Read)拿诸,因為同一事務(wù)的其他實例在該實例處理其間可能會有新的commit,所以同一select可能返回不同結(jié)果

Repeatable Read(可重讀)
這是MySQL的默認事務(wù)隔離級別塞茅,它確保同一事務(wù)的多個實例在并發(fā)讀取數(shù)據(jù)時亩码,會看到同樣的數(shù)據(jù)行。不過理論上野瘦,這會導致另一個棘手的問題:幻讀 (Phantom Read)描沟。簡單的說,幻讀指當用戶讀取某一范圍的數(shù)據(jù)行時鞭光,另一個事務(wù)又在該范圍內(nèi)插入了新行吏廉,當用戶再讀取該范圍的數(shù)據(jù)行時,會發(fā)現(xiàn)有新的“幻影” 行惰许。InnoDB和Falcon存儲引擎通過多版本并發(fā)控制(MVCC席覆,Multiversion Concurrency Control)機制解決了該問題。

Serializable(可串行化) 這是最高的隔離級別汹买,它通過強制事務(wù)排序佩伤,使之不可能相互沖突,從而解決幻讀問題晦毙。簡言之畦戒,它是在每個讀的數(shù)據(jù)行上加上共享鎖。在這個級別结序,可能導致大量的超時現(xiàn)象和鎖競爭

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末障斋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垃环,老刑警劉巖邀层,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遂庄,居然都是意外死亡寥院,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門涛目,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秸谢,“玉大人,你說我怎么就攤上這事霹肝』锖” “怎么了只泼?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵刽酱,是天一觀的道長载城。 經(jīng)常有香客問我,道長讯赏,這世上最難降的妖魔是什么垮兑? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮漱挎,結(jié)果婚禮上系枪,老公的妹妹穿的比我還像新娘。我一直安慰自己磕谅,他們只是感情好嗤无,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著怜庸,像睡著了一般当犯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上割疾,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天嚎卫,我揣著相機與錄音,去河邊找鬼宏榕。 笑死拓诸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的麻昼。 我是一名探鬼主播奠支,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抚芦!你這毒婦竟也來了倍谜?” 一聲冷哼從身側(cè)響起迈螟,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎尔崔,沒想到半個月后答毫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡季春,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年洗搂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片载弄。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡耘拇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宇攻,到底是詐尸還是另有隱情惫叛,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布尺碰,位于F島的核電站,受9級特大地震影響译隘,放射性物質(zhì)發(fā)生泄漏亲桥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一固耘、第九天 我趴在偏房一處隱蔽的房頂上張望题篷。 院中可真熱鬧,春花似錦厅目、人聲如沸番枚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葫笼。三九已至,卻和暖如春拗馒,著一層夾襖步出監(jiān)牢的瞬間路星,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工诱桂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洋丐,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓挥等,卻偏偏與公主長得像友绝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肝劲,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

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

  • MySQL技術(shù)內(nèi)幕:InnoDB存儲引擎(第2版) 姜承堯 第1章 MySQL體系結(jié)構(gòu)和存儲引擎 >> 在上述例子...
    沉默劍士閱讀 7,398評論 0 16
  • 事務(wù)簡介 ACID 原子性(Atomicity):事務(wù)是數(shù)據(jù)庫的邏輯工作單位迁客,它對數(shù)據(jù)庫的修改要么全部執(zhí)行郭宝,要么全...
    ywhu閱讀 653評論 0 0
  • 事務(wù)的定義 事務(wù)由單獨單元的一個或多個SQL語句組成,在這個單元中哲泊,每個MySQL語句是相互依賴的剩蟀。而整個單獨單元...
    諸葛堅強閱讀 1,082評論 0 3
  • 洮州冶力關(guān)有一座山峰,其形態(tài)酷似一巨大將軍在仰天長眠切威,當?shù)厝顺獭皩④娝辍庇亍P矣诟侥晗穆渥隳慷茫⒐⒂趹严入钅?..
    無墨散人閱讀 497評論 4 3
  • 從前缰冤,她一直認為在物質(zhì)與愛情的老話題中,她一定會選擇物質(zhì)喳魏,畢竟棉浸,她一直是家中的乖乖女,父母的選擇也自然也成為了...
    多啦A夢888閱讀 408評論 0 0