最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql事務(wù)的基本要素與事務(wù)隔離級(jí)別詳解

 更新時(shí)間:2023年08月15日 09:22:29   作者:SSS_HuLiang  
這篇文章主要介紹了mysql事務(wù)的基本要素與事務(wù)隔離級(jí)別詳解,事務(wù)是一種機(jī)制、一個(gè)操作序列,包含了一組數(shù)據(jù)庫(kù)操作命令,并且把所有的命令作為一個(gè)整體一起向系統(tǒng)提交或撤銷操作請(qǐng)求,需要的朋友可以參考下

mysql事務(wù)(ACID,臟讀,不可重復(fù)讀,幻讀,隔離級(jí)別)

何為事務(wù)?事務(wù)是執(zhí)行某個(gè)任務(wù)時(shí)的一系列操作,是一組SQL語(yǔ)句,多條SQL的集合。

事務(wù)是一種機(jī)制、一個(gè)操作序列,包含了一組數(shù)據(jù)庫(kù)操作命令,并且把所有的命令作為一個(gè)整體一起向系統(tǒng)提交或撤銷操作請(qǐng)求,即這一組數(shù)據(jù)庫(kù)命令要么都執(zhí)行,要么都不執(zhí)行。

一、事務(wù)的基本要素(ACID)

1、原子性(Atomicity)

原子,是物質(zhì)構(gòu)成的基本單位,不可分割,也就是說(shuō)事務(wù)是一個(gè)不可分割的整體。

事務(wù)里面的SQL要么全執(zhí)行,要么全不執(zhí)行,不可能停滯在中間環(huán)節(jié)。

事務(wù)執(zhí)行過(guò)程中出錯(cuò),會(huì)回滾到事務(wù)開始前的狀態(tài),所有的操作就像沒(méi)有發(fā)生一樣。

例子:就拿A與B轉(zhuǎn)賬為例,一條語(yǔ)句從A里扣錢,另一條語(yǔ)句往B身上加錢,如果這兩條語(yǔ)句不能全部執(zhí)行,而是成功了一部分,那事務(wù)就沒(méi)有存在的意義了。

2、一致性(Consistency)

事務(wù)開始前和結(jié)束后,數(shù)據(jù)庫(kù)的一致性約束沒(méi)有被破壞。

例子:比如A向B轉(zhuǎn)賬100元,而余額里面只有90元,B已經(jīng)收到錢,A開始扣錢,發(fā)現(xiàn)錢不夠,然后事務(wù)需要回滾,這是原子性?。。。。ㄒ慈繄?zhí)行—轉(zhuǎn)賬成功一加一減,要么全部失敗—轉(zhuǎn)賬失敗,金額不變)。

所以不管是成功,還是失敗,數(shù)據(jù)都是一致的,什么意思呢?

轉(zhuǎn)賬成功,A減了錢,B加了錢,數(shù)據(jù)一致。轉(zhuǎn)賬失敗,A和B的錢都沒(méi)變化,數(shù)據(jù)一致。A減了錢,B卻沒(méi)收到,或者A沒(méi)減錢,B收到了,那數(shù)據(jù)就是不一致了。

一致性其實(shí)是由原子性(執(zhí)行成功,執(zhí)行失敗數(shù)據(jù)一致),隔離性(其他事務(wù)不會(huì)影響數(shù)據(jù)一致),持久性(需要數(shù)據(jù)持久化)決定的,也就是C是由AID做基礎(chǔ)的,保證了數(shù)據(jù)的一致性。

3、隔離性(Isolation)

同一時(shí)間,只允許一個(gè)事務(wù)請(qǐng)求同一數(shù)據(jù),不同的事務(wù)之間彼此沒(méi)有任何干擾。

例子:A正在從一張銀行卡中取錢,在A取錢的過(guò)程結(jié)束前,B不能向這張卡轉(zhuǎn)賬。

再比如A用戶讀取訂單列表的時(shí)候,B用戶操作,把某條訂單給刪了,就造成了臟讀,A讀的數(shù)據(jù)是錯(cuò)誤的。

4、持久性(Durability)

事務(wù)完成后,事務(wù)對(duì)數(shù)據(jù)庫(kù)的所有更新將被保存到數(shù)據(jù)庫(kù),不能回滾。

數(shù)據(jù)到物理存儲(chǔ)中,已經(jīng)持久化,所以有持久性。

二、事務(wù)的并發(fā)問(wèn)題

1、臟讀(DirtyReads)

讀取了未提交的數(shù)據(jù):事務(wù)A讀取了事務(wù)B更新的數(shù)據(jù),然后B回滾操作,那么A讀取到的數(shù)據(jù)是臟數(shù)據(jù)。

例子:B修改了訂單詳情,還未提交事務(wù),A查看詳情(讀的是B修改后的數(shù)據(jù)),此時(shí)B事務(wù)出錯(cuò),進(jìn)行回滾。A查看的數(shù)據(jù)就是臟的(假數(shù)據(jù))。

2、不可重復(fù)讀(Non-RepeatableReads)

前后多次讀取,數(shù)據(jù)內(nèi)容不一致:事務(wù)A多次讀取同一數(shù)據(jù),事務(wù)B在事務(wù)A多次讀取的過(guò)程中,對(duì)數(shù)據(jù)作了更新并提交,導(dǎo)致事務(wù)A多次讀取同一數(shù)據(jù)時(shí),結(jié)果不一致。

例子:事務(wù)A修改用戶姓名,此時(shí)年齡為20,事務(wù)B修改年齡為25,等事務(wù)A修改完再查詢,發(fā)現(xiàn)年齡由20變成了25。此時(shí)事務(wù)B回滾,A再返回頁(yè)面發(fā)現(xiàn)年齡變回了20,多次讀取,年齡20-25-20,重復(fù)讀出來(lái)的數(shù)據(jù)內(nèi)容不一致。

3、幻讀(PhantomRead)

前后多次讀取,數(shù)據(jù)內(nèi)容不一致

例子:A將數(shù)據(jù)庫(kù)中所有學(xué)生的成績(jī)從具體分?jǐn)?shù)重置為0,但是B就在這個(gè)時(shí)候插入了一條具體分?jǐn)?shù)100的記錄,當(dāng)A改結(jié)束后發(fā)現(xiàn)還有一條記錄沒(méi)有改過(guò)來(lái),就好像發(fā)生了幻覺一樣,這就叫幻讀。 小結(jié):不可重復(fù)讀的和幻讀很容易混淆,不可重復(fù)讀側(cè)重于修改,幻讀側(cè)重于新增或刪除。解決不可重復(fù)讀的問(wèn)題只需鎖住滿足條件的行,解決幻讀需要鎖表

三、mysql事務(wù)隔離級(jí)別

有四種隔離級(jí)別,用來(lái)解決數(shù)據(jù)庫(kù)操作中產(chǎn)生的各種問(wèn)題。java中Connection類里面定義了對(duì)應(yīng)的數(shù)字,分別是

1、讀未提交(Readuncommitted)

所有事務(wù)能夠讀取其他事務(wù)未提交的數(shù)據(jù),會(huì)造成臟讀。因此在該種隔離級(jí)別下,造成臟讀、不可重復(fù)讀和幻讀。

2、讀已提交(Readcommitted)

Oracle和SQLServer默認(rèn)的隔離級(jí)別②

所有事務(wù)只能讀取其他事務(wù)已經(jīng)提交的內(nèi)容,能夠徹底解決臟讀的現(xiàn)象。但在這種隔離級(jí)別下,會(huì)出現(xiàn)一個(gè)事務(wù)的前后多次的查詢中卻返回了不同內(nèi)容的數(shù)據(jù)的現(xiàn)象,也就是出現(xiàn)了不可重復(fù)讀。

3、可重復(fù)讀(Repeatableread)

mysql默認(rèn)隔離級(jí)別④

所有事務(wù)前后多次的讀取到的數(shù)據(jù)內(nèi)容是不變的,也就是某個(gè)事務(wù)在執(zhí)行的過(guò)程中,不允許其他事務(wù)進(jìn)行update(delete也屬于update范疇)操作,但允許其他事務(wù)進(jìn)行add操作,造成某個(gè)事務(wù)前后多次讀取到的數(shù)據(jù)總量不一致的現(xiàn)象,從而產(chǎn)生幻讀。

4、可串行化(Serializable)

所有的事務(wù)就像被串起來(lái),有秩序地執(zhí)行,類似java的synchronized同步。所以他們之間不存在沖突,從而能有效地解決臟讀、不可重復(fù)讀和幻讀的現(xiàn)象。

但是安全和效率不能兼得,會(huì)導(dǎo)致大量的操作超時(shí)和鎖競(jìng)爭(zhēng),從而大大降低數(shù)據(jù)庫(kù)的性能,一般不使用這樣事務(wù)隔離級(jí)別。

事務(wù)隔離級(jí)別對(duì)應(yīng)表

事務(wù)隔離級(jí)別臟讀不可重復(fù)讀幻讀
讀未提交(read-uncommitted)
不可重復(fù)讀(read-committed)
可重復(fù)讀(repeatable-read)
串行化(serializable)

到此這篇關(guān)于mysql事務(wù)的基本要素與事務(wù)隔離級(jí)別詳解的文章就介紹到這了,更多相關(guān)mysql事務(wù)的基本要素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用mysql workbench自動(dòng)生成ER圖的實(shí)現(xiàn)步驟

    使用mysql workbench自動(dòng)生成ER圖的實(shí)現(xiàn)步驟

    MySQL Workbench是一款專為MySQL設(shè)計(jì)的ER/數(shù)據(jù)庫(kù)建模工具,它是著名的數(shù)據(jù)庫(kù)設(shè)計(jì)工具DBDesigne4的繼任者,可以通過(guò)MySQL Workbench設(shè)計(jì)和創(chuàng)建新的數(shù)據(jù)庫(kù)圖示,本文給大家介紹了使用mysql workbench自動(dòng)生成ER圖的實(shí)現(xiàn)步驟,需要的朋友可以參考下
    2024-06-06
  • lnmp重置mysql數(shù)據(jù)庫(kù)root密碼的兩種方法

    lnmp重置mysql數(shù)據(jù)庫(kù)root密碼的兩種方法

    這篇文章給大家介紹了lnmp重置mysql數(shù)據(jù)庫(kù)root密碼的兩種方法,第一種方法通過(guò)腳本重置密碼,第二種方法通過(guò)命令修改,具體操作方法大家參考下本文
    2017-07-07
  • Mac下安裝mysql5.7.18的詳細(xì)步驟

    Mac下安裝mysql5.7.18的詳細(xì)步驟

    這篇文章主要為大家詳細(xì)介紹了]Mac下安裝mysql5.7.18的詳細(xì)步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • clickhouse分布式表的操作示例詳解

    clickhouse分布式表的操作示例詳解

    這篇文章主要為大家介紹了clickhouse分布式表的操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • MySQL的索引失效的原因?qū)嵗敖鉀Q方案

    MySQL的索引失效的原因?qū)嵗敖鉀Q方案

    這篇文章主要討論了MySQL索引失效的常見原因及其解決方案,它涵蓋了數(shù)據(jù)類型不匹配、隱式轉(zhuǎn)換、函數(shù)或表達(dá)式、范圍查詢、LIKE查詢、OR條件、全表掃描、索引選擇性低、覆蓋索引不足和統(tǒng)計(jì)信息不準(zhǔn)確等問(wèn)題,感興趣的朋友一起看看吧
    2024-12-12
  • MySQL存儲(chǔ)過(guò)程實(shí)踐(in、out、inout)

    MySQL存儲(chǔ)過(guò)程實(shí)踐(in、out、inout)

    文章介紹了數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程,包括其定義、優(yōu)缺點(diǎn)、性能調(diào)校與撰寫,以及創(chuàng)建和調(diào)用方法,還詳細(xì)說(shuō)明了存儲(chǔ)過(guò)程的參數(shù)類型,包括IN、OUT和INOUT,并提供了示例代碼,最后,文章還解決了存儲(chǔ)過(guò)程名已存在的報(bào)錯(cuò)問(wèn)題
    2025-11-11
  • ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/tmp/mysql.sock''

    ERROR 2002 (HY000): Can''t connect to local MySQL server thr

    mysql 支持 socket 和 TCP/IP 連接。那么 mysql.sock 這個(gè)文件有什么用呢?本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2019-11-11
  • MySQL主從復(fù)制延遲原因以及解決方案

    MySQL主從復(fù)制延遲原因以及解決方案

    這篇文章主要介紹了MySQL主從復(fù)制延遲原因以及解決方案,幫助大家更好的理解和使用數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-09-09
  • 大廠面試必問(wèn)題之MySQL大文本如何進(jìn)行處理

    大廠面試必問(wèn)題之MySQL大文本如何進(jìn)行處理

    這篇文章主要介紹了大廠面試必問(wèn)題之MySQL大文本如何進(jìn)行處理的相關(guān)資料,面試者需要展示對(duì)MySQL索引機(jī)制的深入理解,并提出合適的索引類型和創(chuàng)建策略,需要的朋友可以參考下
    2025-01-01
  • 詳解MySQL幻讀及如何消除

    詳解MySQL幻讀及如何消除

    這篇文章主要介紹了詳解MySQL 幻讀及解決方法,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03

最新評(píng)論

炉霍县| 定州市| 南漳县| 新竹市| 得荣县| 襄城县| 静乐县| 柳州市| 怀宁县| 浦县| 安乡县| 府谷县| 成都市| 犍为县| 蕉岭县| 固安县| 上虞市| 霍林郭勒市| 卢氏县| 明水县| 长顺县| 遂昌县| 伊宁市| 洛南县| 商河县| 汉中市| 晋州市| 伊川县| 明星| 隆尧县| 昌邑市| 德保县| 阿克| 榆中县| 环江| 望奎县| 南涧| 察雅县| 商水县| 乐平市| 沙湾县|