<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          事務(wù)相關(guān)知識點

          共 2352字,需瀏覽 5分鐘

           ·

          2020-12-23 00:46

          點擊上方「藍字」關(guān)注我們

          0x01:事務(wù)的基本要素(ACID)

          • 原子性(Atomicity):事務(wù)開始后所有操作,要么全部做完,要么全部不做,不可能停滯在中間環(huán)節(jié)。事務(wù)執(zhí)行過程中出錯,會回滾到事務(wù)開始前的狀態(tài),所有的操作就像沒有發(fā)生一樣。也就是說事務(wù)是一個不可分割的整體,就像化學(xué)中學(xué)過的原子,是物質(zhì)構(gòu)成的基本單位;

          • 一致性(Consistency):事務(wù)開始前和結(jié)束后,數(shù)據(jù)庫的完整性約束沒有被破壞 。比如A向B轉(zhuǎn)賬,不可能A扣了錢,B卻沒收到;

          • 隔離性(Isolation):同一時間,只允許一個事務(wù)請求同一數(shù)據(jù),不同的事務(wù)之間彼此沒有任何干擾。比如A正在從一張銀行卡中取錢,在A取錢的過程結(jié)束前,B不能向這張卡轉(zhuǎn)賬;

          • 持久性(Durability):事務(wù)完成后,事務(wù)對數(shù)據(jù)庫的所有更新將被保存到數(shù)據(jù)庫,不能回滾;


          0x02:事務(wù)的并發(fā)問題

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

          • 不可重復(fù)讀:事務(wù) A 多次讀取同一數(shù)據(jù),事務(wù) B 在事務(wù)A多次讀取的過程中,對數(shù)據(jù)作了更新并提交,導(dǎo)致事務(wù)A多次讀取同一數(shù)據(jù)時,結(jié)果 不一致;

          • 幻讀:系統(tǒng)管理員A將數(shù)據(jù)庫中所有學(xué)生的成績從具體分?jǐn)?shù)改為ABCDE等級,但是系統(tǒng)管理員B就在這個時候插入了一條具體分?jǐn)?shù)的記錄,當(dāng)系統(tǒng)管理員A改結(jié)束后發(fā)現(xiàn)還有一條記錄沒有改過來,就好像發(fā)生了幻覺一樣,這就叫幻讀;

          不可重復(fù)讀的和幻讀很容易混淆,不可重復(fù)讀側(cè)重于修改,幻讀側(cè)重于新增或刪除。解決不可重復(fù)讀的問題只需鎖住滿足條件的行,解決幻讀需要鎖表。

          MySQL事務(wù)隔離級別

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

          MySQL默認(rèn)的事務(wù)隔離級別為repeatable-read;Oracle默認(rèn)系統(tǒng)事務(wù)隔離級別是read-committed。


          0x03:Spring五個不同的事務(wù)隔離級別

          TransactionDefinition接口中定義了五個不同的事務(wù)隔離級別,其含義如下:

          • ISOLATION_DEFAULT:這是一個PlatfromTransactionManager默認(rèn)的隔離級別,使用數(shù)據(jù)庫默認(rèn)的事務(wù)隔離級別.另外四個與JDBC的隔離級別相對應(yīng);

          • ISOLATION_READ_UNCOMMITTED:這是事務(wù)最低的隔離級別,它充許別外一個事務(wù)可以看到這個事務(wù)未提交的數(shù)據(jù)。這種隔離級別會產(chǎn)生臟讀,不可重復(fù)讀和幻像讀;

          • ISOLATION_READ_COMMITTED:保證一個事務(wù)修改的數(shù)據(jù)提交后才能被另外一個事務(wù)讀取。另外一個事務(wù)不能讀取該事務(wù)未提交的數(shù)據(jù)。這種事務(wù)隔離級別可以避免臟讀出現(xiàn),但是可能會出現(xiàn)不可重復(fù)讀和幻像讀;

          • ISOLATION_REPEATABLE_READ:這種事務(wù)隔離級別可以防止臟讀,不可重復(fù)讀。但是可能出現(xiàn)幻像讀。它除了保證一個事務(wù)不能讀取另一個事務(wù)未提交的數(shù)據(jù)外,還保證了避免下面的情況產(chǎn)生(不可重復(fù)讀);

          • ISOLATION_SERIALIZABLE:這是花費最高代價但是最可靠的事務(wù)隔離級別。事務(wù)被處理為順序執(zhí)行。除了防止臟讀,不可重復(fù)讀外,還避免了幻像讀;


          0x04:Spring七個事務(wù)傳播行為

          • TransactionDefinition接口中定義了七個事務(wù)傳播行為;其含義如下:PROPAGATION_REQUIRED:如果存在一個事務(wù),則支持當(dāng)前事務(wù)。如果沒有事務(wù)則開啟一個新的事務(wù);

          • PROPAGATION_SUPPORTS:如果存在一個事務(wù),支持當(dāng)前事務(wù)。如果沒有事務(wù),則非事務(wù)的執(zhí)行。但是對于事務(wù)同步的事務(wù)管理器,PROPAGATION_SUPPORTS與不使用事務(wù)有少許不同;

          • PROPAGATION_MANDATORY:如果已經(jīng)存在一個事務(wù),支持當(dāng)前事務(wù)。如果沒有一個活動的事務(wù),則拋出異常;

          • PROPAGATION_REQUIRES_NEW:總是開啟一個新的事務(wù)。如果一個事務(wù)已經(jīng)存在,則將這個存在的事務(wù)掛起;

          • PROPAGATION_NOT_SUPPORTED:總是非事務(wù)地執(zhí)行,并掛起任何存在的事務(wù);

          • PROPAGATION_NEVER:總是非事務(wù)地執(zhí)行,如果存在一個活動事務(wù),則拋出異常;

          • PROPAGATION_NESTED:如果一個活動的事務(wù)存在,則運行在一個嵌套的事務(wù)中. 如果沒有活動事務(wù), 則按TransactionDefinition.PROPAGATION_REQUIRED 屬性執(zhí)行;


          0x05:分布式事務(wù)CAP理論


          • 一致性(Consistency):一致性指的是數(shù)據(jù)的強一致性。每次的讀操作都是讀取的最新數(shù)據(jù)。即如果寫入某個數(shù)據(jù)成功的話,之后的讀取都應(yīng)該讀的是新寫入的數(shù)據(jù);如果寫入失敗的話,之后讀取的都不應(yīng)該是寫入失敗的數(shù)據(jù)。

          • 可用性(Availability):可用性指的是服務(wù)的可用性。即每個請求都能在合理的時間內(nèi)獲得符合預(yù)期的響應(yīng)結(jié)果。

          • 分區(qū)容錯性(Partition Tolerance):分區(qū)容錯性指的是當(dāng)節(jié)點之間的網(wǎng)絡(luò)出現(xiàn)問題之后,系統(tǒng)仍然能夠正常提供服務(wù)。

          在分布式的系統(tǒng)中,P是基本要求,而單體應(yīng)用則是CA系統(tǒng)。微服務(wù)系統(tǒng)通常是一個AP系統(tǒng),即同時滿足可用性和分區(qū)容錯性。這樣就有了一個在分布式系統(tǒng)中保證數(shù)據(jù)強一致性的難題,這個難題的一個解決方案就是分布式事務(wù)。

          瀏覽 36
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  蜜桃视频成人 免费 | 午夜看逼 | www.男人的天堂 | 韩国三级无码无遮床戏视频 | 艹b网站在线观看 |