數(shù)據(jù)庫事務(wù)

數(shù)據(jù)庫事務(wù)的四大特點

上學(xué)的時候我們都學(xué)過事務(wù)的四大特點ACID,很多時候我們都不知道ACID到底是個什么東西赞赖?今天我們就來好好分析分析是什么叫做ACID嬉挡。

  • A(Automicity)
    就是我們經(jīng)常所說的原子性,所謂的原子性喷户,就是一組操作要么不做要么全做,不能有做了一半的情況访锻。
  • C (Consistency)
    一致性褪尝,是指事務(wù)必須使數(shù)據(jù)庫從一個一致性狀態(tài)切換到另外一個一致性狀態(tài)闹获,也就是事務(wù)在執(zhí)行前和執(zhí)行之后狀態(tài)必須一致。

看到一個很好的說明一致性的例子河哑,銀行兩個賬戶總共1萬塊錢避诽,不論他們之間發(fā)生多少次轉(zhuǎn)賬,總共的金額應(yīng)該是1萬塊不變璃谨。

  • I (Isolayion)
    隔離性沙庐,就是多個并發(fā)事務(wù)會被隔離開,相互之間不會互相干擾佳吞。

例如多個用戶在操作數(shù)據(jù)庫同一張表的時候拱雏,會產(chǎn)生多個事務(wù),這些事務(wù)執(zhí)行是串行化的底扳。

  • D (Durability)
    永久性铸抑,也就是這個事務(wù)被提交了,就不會再被更改了衷模。

如果沒有事務(wù)的隔離性鹊汛,會發(fā)生什么呢?

  • 臟讀
    有兩個事務(wù)阱冶,A和B,如果同時操作數(shù)據(jù)庫的同一張表刁憋,在沒有隔離性的前提下,A的操作尚未提交木蹬,B同時操作的話至耻,B會讀到A尚未提交的數(shù)據(jù),這就造成了臟讀届囚。
update account set money=money+100 where name=’B’;  (此時A通知B)
update account set money=money - 100 where name=’A’;

如果執(zhí)行完一個update有梆,此時b去查詢的時候發(fā)現(xiàn)賬戶確實多了100,而后一個update執(zhí)行失敗意系,事務(wù)回滾泥耀,此時b的賬戶并沒有多100塊,就會造成臟讀蛔添。

  • 不可重復(fù)讀
    不可重復(fù)讀是指痰催,在一個事務(wù)里多次查詢得到的結(jié)果不一致,原因是因為在這個事務(wù)執(zhí)行的同時其他事務(wù)操作了數(shù)據(jù)并且已經(jīng)提交迎瞧。
// 第一個事務(wù)第一查詢
select * from t_user t where t.name like '%a%'夸溶;
// 第二個事務(wù)執(zhí)行了update,并且已經(jīng)提交
update t_user set  name value =' amily'凶硅;
// 第一個事務(wù)再次查詢
select * from t_user t where t.name like '%a%'缝裁;

這樣兩次查詢的結(jié)果就是不一致的。
臟讀和不可重復(fù)讀的區(qū)別是什么呢足绅?
臟讀是一個事務(wù)讀到另一個事務(wù)未提交的數(shù)據(jù)捷绑,不可重復(fù)讀是指一個事務(wù)讀到另一個已經(jīng)提交了的事務(wù)韩脑。

  • 幻讀
    幻讀是事務(wù)非獨立執(zhí)行的一種現(xiàn)象。例如事務(wù)a把數(shù)據(jù)庫里面某張表的數(shù)據(jù)從1修改為2粹污,這時事務(wù)b往數(shù)據(jù)庫里面有插入了一條為1的數(shù)據(jù)段多,這時事務(wù)a再做查詢的時候會發(fā)現(xiàn)有多出了一個為1的記錄,就會感覺很奇怪壮吩,以為自己產(chǎn)生幻覺了进苍,所以就叫做幻讀了,其實這個時候讀到的數(shù)據(jù)是事務(wù)b插入到數(shù)據(jù)庫的鸭叙。
// 第一個事務(wù)更新
update t_user set name=2 where name=1;
// 第二個事務(wù)insert
insert into t_user   (name) value  (1)觉啊;
// 第一個事務(wù)查詢
select * from t_user t where t.name =  1;

數(shù)據(jù)庫事務(wù)的四大隔離級別

  • read-uncommitted
    讀未提交,如果是讀未提交肯定會出現(xiàn)臟讀递雀,幻讀柄延,不可重復(fù)讀
  • read-committed
    讀已提交,如果讀已經(jīng)提交的話缀程,肯定不會出現(xiàn)臟讀了搜吧,但是幻讀,不可重復(fù)讀肯定還是會出現(xiàn)的
  • repeatable-read (mysql innodb默認的)
    重復(fù)讀杨凑,可以避免臟讀和不可重復(fù)讀滤奈,通過間隙鎖可以避免幻讀。
  • serializable
    串行化撩满,這個就牛逼了蜒程,意思就是一個一個的來,當(dāng)然什么不可重復(fù)讀伺帘,幻讀昭躺,臟讀統(tǒng)統(tǒng)的搞定。

總結(jié)一下:

隔離級別 Dirty reads non-repeatable reads phantom reads
Serializable 不會 不會 不會
READ COMMITTED 不會
REPEATABLE READ 不會 不會
Read Uncommitted

性能來說的話是:
read-uncommitted>read-committed>reaptable-read>serializable
從隔離性來說:
read-uncommitted<read-committed<reaptable-read<serializable

參考來源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伪嫁,一起剝皮案震驚了整個濱河市领炫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌张咳,老刑警劉巖帝洪,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脚猾,居然都是意外死亡葱峡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門龙助,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砰奕,“玉大人,你說我怎么就攤上這事【” “怎么了常空?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盖溺。 經(jīng)常有香客問我,道長铣缠,這世上最難降的妖魔是什么烘嘱? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮蝗蛙,結(jié)果婚禮上蝇庭,老公的妹妹穿的比我還像新娘。我一直安慰自己捡硅,他們只是感情好哮内,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著壮韭,像睡著了一般北发。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喷屋,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天琳拨,我揣著相機與錄音,去河邊找鬼屯曹。 笑死狱庇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恶耽。 我是一名探鬼主播密任,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼偷俭!你這毒婦竟也來了浪讳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤社搅,失蹤者是張志新(化名)和其女友劉穎驻债,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體形葬,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡合呐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了笙以。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淌实。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拆祈,到底是詐尸還是另有隱情恨闪,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布放坏,位于F島的核電站咙咽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏淤年。R本人自食惡果不足惜钧敞,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望麸粮。 院中可真熱鬧溉苛,春花似錦、人聲如沸弄诲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽齐遵。三九已至寂玲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梗摇,已是汗流浹背敢茁。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留留美,地道東北人彰檬。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像谎砾,于是被迫代替她去往敵國和親逢倍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

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