06 - MySQL事務(wù)

1. 事務(wù)的4大特性 | ACID

參考1https://www.runoob.com/mysql/mysql-transaction.html

  • 原子性Atomicity:也稱不可分割性姥份。一個(gè)事務(wù)是一個(gè)不可分割的工作單位谤狡,原子性側(cè)重于狀態(tài),事務(wù)中包括的操作要么都做聂儒,要么都不做菊值,不存在只有部分做了的狀態(tài)抄淑。

  • 一致性Consistency:事務(wù)必須是數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。一致性與原子性是密切相關(guān)的馋记,一致性側(cè)重于可見(jiàn)性号坡,只有最初狀態(tài)和最終狀態(tài)的數(shù)據(jù)對(duì)外可見(jiàn),而中間狀態(tài)(事務(wù)沒(méi)有結(jié)束)的數(shù)據(jù)對(duì)外部不可見(jiàn)梯醒。

  • 隔離性Isolation:一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾宽堆。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù),對(duì)并發(fā)的其他事務(wù)是隔離的茸习,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾畜隶。

  • 持久性Durability:也稱永久性。一個(gè)事務(wù)一旦提交逮光,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的代箭。接下來(lái)的其他操作或故障不應(yīng)該對(duì)其有任何影響。

注意:1.原子性和一致性的的側(cè)重點(diǎn)不同:原子性關(guān)注狀態(tài)涕刚,要么全部成功嗡综,要么全部失敗,不存在部分成功的狀態(tài)杜漠。而一致性關(guān)注數(shù)據(jù)的可見(jiàn)性极景,中間狀態(tài)的數(shù)據(jù)對(duì)外部不可見(jiàn),只有最初狀態(tài)和最終狀態(tài)的數(shù)據(jù)對(duì)外可見(jiàn)驾茴。
2.在未提交讀的隔離級(jí)別下盼樟,會(huì)造成臟讀,這就是因?yàn)橐粋€(gè)事務(wù)讀到了另一個(gè)事務(wù)操作內(nèi)部的數(shù)據(jù)锈至。ACID中是的一致性描述的是一個(gè)最理想的事務(wù)應(yīng)該怎樣的晨缴,是一個(gè)強(qiáng)一致性狀態(tài),如果要做到這點(diǎn)峡捡,需要使用排它鎖把事務(wù)排成一隊(duì)击碗,即Serializable的隔離級(jí)別筑悴,這樣性能就大大降低了。現(xiàn)實(shí)是骨感的稍途,所以使用隔離性的不同隔離級(jí)別來(lái)破壞一致性阁吝,來(lái)獲取更好的性能。


2. 自動(dòng)提交 | autocommit

參考2https://www.bilibili.com/video/BV1Vt411z7wy?p=58

#MySQL默認(rèn)開(kāi)啟“自動(dòng)提交”功能械拍,
#即每條SQL語(yǔ)句執(zhí)行完畢之后都會(huì)自動(dòng)commit突勇,因此接著使用rollback相當(dāng)于沒(méi)有效果

#查看autocommit功能的狀態(tài)(1為開(kāi)啟,0為關(guān)閉)
mysql> select @@autocommit;     
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

#手動(dòng)關(guān)閉autocommit功能坷虑,就可以隨時(shí)隨地使用rollback甲馋。不過(guò)這樣太隨意了,不推薦
mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+
1 row in set (0.00 sec)
#


3. 手動(dòng)開(kāi)啟事務(wù)transaction

#寫(xiě)法1
mysql> begin;
Query OK, 0 rows affected (0.28 sec)

#寫(xiě)法2
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)


4. 事務(wù)的隔離級(jí)別

  • 查看隔離級(jí)別(MySQL默認(rèn)隔離級(jí)別——可重復(fù)讀)
#會(huì)話范圍的迄损,每一次數(shù)據(jù)庫(kù)連接都是一次會(huì)話摔刁,如一次jdbc連接
mysql> select @@session.transaction_isolation;
+---------------------------------+
| @@session.transaction_isolation |
+---------------------------------+
| REPEATABLE-READ                 |
+---------------------------------+
1 row in set (0.23 sec)

#全局、系統(tǒng)范圍的
mysql> select @@global.transaction_isolation;
+--------------------------------+
| @@global.transaction_isolation |
+--------------------------------+
| REPEATABLE-READ                |
+--------------------------------+
1 row in set (0.28 sec)
  • 修改隔離級(jí)別
#會(huì)話范圍的
mysql> set session transaction isolation level read committed;
Query OK, 0 rows affected (0.21 sec)

#全局海蔽、系統(tǒng)范圍的
mysql> set global transaction isolation level read uncommitted;
Query OK, 0 rows affected (0.28 sec)

#注意:在修改隔離級(jí)別時(shí)若不指定 GLOBAL/SESSION 關(guān)鍵字,
#則只會(huì)針對(duì)當(dāng)前會(huì)話中的下一個(gè)事務(wù)生效绑谣,
#當(dāng)下一個(gè)事務(wù)結(jié)束后党窜,又會(huì)恢復(fù)到當(dāng)前會(huì)話session設(shè)定的隔離級(jí)別。

注:上述內(nèi)容借宵,部分來(lái)自于網(wǎng)絡(luò)或書(shū)籍幌衣,僅作為學(xué)習(xí)記錄使用。由于參考來(lái)源眾多壤玫,未依次標(biāo)明出處豁护。若有原作者看到此文,麻煩聯(lián)系本人欲间,我會(huì)第一時(shí)間處理楚里。我對(duì)由此給您帶來(lái)的不便,深感抱歉猎贴!望見(jiàn)諒班缎,謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末她渴,一起剝皮案震驚了整個(gè)濱河市达址,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趁耗,老刑警劉巖沉唠,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異苛败,居然都是意外死亡满葛,警方通過(guò)查閱死者的電腦和手機(jī)径簿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)纱扭,“玉大人牍帚,你說(shuō)我怎么就攤上這事∪槎辏” “怎么了暗赶?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肃叶。 經(jīng)常有香客問(wèn)我蹂随,道長(zhǎng),這世上最難降的妖魔是什么因惭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任岳锁,我火速辦了婚禮,結(jié)果婚禮上蹦魔,老公的妹妹穿的比我還像新娘激率。我一直安慰自己,他們只是感情好勿决,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布乒躺。 她就那樣靜靜地躺著,像睡著了一般低缩。 火紅的嫁衣襯著肌膚如雪嘉冒。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天咆繁,我揣著相機(jī)與錄音讳推,去河邊找鬼。 笑死玩般,一個(gè)胖子當(dāng)著我的面吹牛银觅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坏为,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼设拟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了久脯?” 一聲冷哼從身側(cè)響起纳胧,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帘撰,沒(méi)想到半個(gè)月后跑慕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年核行,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了牢硅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芝雪,死狀恐怖减余,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惩系,我是刑警寧澤位岔,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站堡牡,受9級(jí)特大地震影響抒抬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晤柄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一擦剑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芥颈,春花似錦惠勒、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至妇垢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肉康,已是汗流浹背闯估。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吼和,地道東北人涨薪。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像炫乓,于是被迫代替她去往敵國(guó)和親刚夺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354