一伍宦、MySQL事務(wù)隔離級(jí)別
mysql默認(rèn)的事務(wù)隔離級(jí)別為repeatable-read(可重復(fù)讀)
1.未提交可讀
2.提交可讀
3.可重復(fù)讀
4.可序列化讀
二.事務(wù)的常見問(wèn)題
1、臟讀:事務(wù)A讀取了事務(wù)B更新的數(shù)據(jù)蔓罚,然后B回滾操作盛末,那么A讀取到的數(shù)據(jù)是臟數(shù)據(jù)
2逮走、不可重復(fù)讀:事務(wù) A 多次讀取同一數(shù)據(jù)贯莺,事務(wù) B 在事務(wù)A多次讀取的過(guò)程中孙咪,對(duì)數(shù)據(jù)作了更新并提交,導(dǎo)致事務(wù)A多次讀取同一數(shù)據(jù)時(shí)夺刑,結(jié)果 不一致缅疟。
3、幻讀:系統(tǒng)管理員A將數(shù)據(jù)庫(kù)中所有學(xué)生的成績(jī)從具體分?jǐn)?shù)改為ABCDE等級(jí)遍愿,但是系統(tǒng)管理員B就在這個(gè)時(shí)候插入了一條具體分?jǐn)?shù)的記錄存淫,當(dāng)系統(tǒng)管理員A改結(jié)束后發(fā)現(xiàn)還有一條記錄沒(méi)有改過(guò)來(lái),就好像發(fā)生了幻覺(jué)一樣沼填,這就叫幻讀桅咆。
小結(jié):不可重復(fù)讀的和幻讀很容易混淆,不可重復(fù)讀側(cè)重于修改坞笙,幻讀側(cè)重于新增或刪除岩饼。解決不可重復(fù)讀的問(wèn)題只需鎖住滿足條件的行刽脖,解決幻讀需要鎖表
三.事務(wù)特性
數(shù)據(jù)庫(kù)事務(wù)特性ACID,即原子性忌愚、一致性曲管、隔離性和持久性。
(1)原子性:原子性這個(gè)概念其實(shí)就是指硕糊,一個(gè)事務(wù)內(nèi)的所有SQL操作都是一個(gè)整體院水,因此只有所有的SQL操作都完全執(zhí)行成功,該事務(wù)方可以認(rèn)為提交成功简十。如果在提交事務(wù)過(guò)程中某一條SQL語(yǔ)句執(zhí)行失敗檬某,則整個(gè)事務(wù)必須回滾到事務(wù)提交前的狀態(tài)。
(2)一致性:而一致性這個(gè)概念則是指螟蝙,事務(wù)在完成的時(shí)候恢恼,必須要保證所有的數(shù)據(jù)都保持一致的狀態(tài),而落實(shí)到數(shù)據(jù)庫(kù)的各個(gè)組成部分上胰默,則要求開發(fā)人員能夠保證數(shù)據(jù)场斑、索引、約束牵署、日志等在事務(wù)前后具備一致性漏隐。
(3)隔離性:隔離性這個(gè)概念主要針對(duì)并發(fā),其核心思想就是不同的并發(fā)事務(wù)對(duì)數(shù)據(jù)產(chǎn)生的修改必須是相互隔離的奴迅,假設(shè)有兩個(gè)不同的事務(wù)A和B并發(fā)執(zhí)行青责,那么對(duì)A來(lái)講,它在執(zhí)行前的狀態(tài)只有兩種取具,即B執(zhí)行前和B執(zhí)行后脖隶。同理,對(duì)B來(lái)講同樣是如此暇检,這樣的特性我們就稱為隔離性产阱。
(4)持久性:持久性相對(duì)簡(jiǎn)單,是指事務(wù)完成以后它對(duì)數(shù)據(jù)的影響是永久性的占哟。