MYSQL中事務(wù)的四大特性(ACID):
原子性(Atomicity)
原子性是指事務(wù)包含的所有操作要么全部成功断箫,要么全部失敗回滾。拿轉(zhuǎn)賬來說琼腔,A向B轉(zhuǎn)賬100瑰枫,A賬戶減少100,B賬戶增加100丹莲,兩個(gè)操作要么一起成功光坝,要么一起失敗,不可再分割甥材。
一致性(Consistency)
數(shù)據(jù)庫(kù)總是從一個(gè)一致性狀態(tài)變換到另一個(gè)一致性狀態(tài)盯另,也就是說一個(gè)事務(wù)執(zhí)行之前和執(zhí)行之后都必須處于一致性狀態(tài)。
拿轉(zhuǎn)賬來說洲赵,假設(shè)用戶A和用戶B兩者的錢加起來一共是5000鸳惯,那么不管A和B之間如何轉(zhuǎn)賬商蕴,轉(zhuǎn)幾次賬,事務(wù)結(jié)束后兩個(gè)用戶的錢相加起來應(yīng)該還得是5000芝发,這就是事務(wù)的一致性绪商。
隔離性(Isolation)
隔離性是當(dāng)多個(gè)用戶并發(fā)訪問數(shù)據(jù)庫(kù)時(shí),比如操作同一張表時(shí)辅鲸,數(shù)據(jù)庫(kù)為每一個(gè)用戶開啟的事務(wù)格郁,不能被其他事務(wù)的操作所干擾,多個(gè)并發(fā)事務(wù)之間要相互隔離独悴。
即要達(dá)到這么一種效果:對(duì)于任意兩個(gè)并發(fā)的事務(wù)T1和T2例书,在事務(wù)T1看來,T2要么在T1開始之前就已經(jīng)結(jié)束刻炒,要么在T1結(jié)束之后才開始决采,這樣每個(gè)事務(wù)都感覺不到有其他事務(wù)在并發(fā)地執(zhí)行。
關(guān)于事務(wù)的隔離性數(shù)據(jù)庫(kù)提供了多種隔離級(jí)別坟奥,稍后會(huì)介紹到树瞭。
持久性(Durability)
持久性是指一個(gè)事務(wù)一旦被提交了,那么對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的改變就是永久性的筏勒,即便是在數(shù)據(jù)庫(kù)系統(tǒng)遇到故障的情況下也不會(huì)丟失提交事務(wù)的操作移迫。
例如我們?cè)谑褂肑DBC操作數(shù)據(jù)庫(kù)時(shí)旺嬉,在提交事務(wù)方法后管行,提示用戶事務(wù)操作完成,當(dāng)我們程序執(zhí)行完成直到看到提示后邪媳,就可以認(rèn)定事務(wù)以及正確提交捐顷,即使這時(shí)候數(shù)據(jù)庫(kù)出現(xiàn)了問題,也必須要將我們的事務(wù)完全執(zhí)行完成雨效,否則就會(huì)造成我們看到提示事務(wù)處理完畢迅涮,但是數(shù)據(jù)庫(kù)因?yàn)楣收隙鴽]有執(zhí)行事務(wù)的重大錯(cuò)誤。