<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ``` mysql事務四大特征(acid): 1. 原子性 2. 一致性 3. 隔離性 4. 持久性 以下幾個概念是事務隔離級別要實際解決的問題,所以需要搞清楚都是什么意思。 **臟讀** 臟讀指的是讀到了其他事務未提交的數據,未提交意味著這些數據可能會回滾,也就是可能最終不會存到數據庫中,也就是不存在的數據。讀到了并一定最終存在的數據,這就是臟讀。 個人理解:并發事務中讀取到了并沒有提交的事務修改后的數據,比如你讀取張三年齡原本是10歲,在其他事務中正在修改張三年齡位20歲,修改后并沒有提交事務,但是自己讀取到的年齡卻是20歲(被修改過的),這就是臟讀。 **可重復讀** 可重復讀指的是在一個事務內,最開始讀到的數據和事務結束前的任意時刻讀到的同一批數據都是一致的。通常針對數據**更新(UPDATE)**操作。 **不可重復讀** 對比可重復讀,不可重復讀指的是在同一事務內,不同的時刻讀到的同一批數據可能是不一樣的,可能會受到其他事務的影響,比如其他事務改了這批數據并提交了。通常針對數據**更新(UPDATE)**操作。 個人理解:在并發事務中讀取了其他事務中修改或者刪除過的數據,并且已經是提交了事務的。這樣會導致你在事務1中讀取的數據是不一致的。 **幻讀** 幻讀是針對數據**插入(INSERT)**操作來說的。假設事務A對某些行的內容作了更改,但是還未提交,此時事務B插入了與事務A更改前的記錄相同的記錄行,并且在事務A提交之前先提交了,而這時,在事務A中查詢,會發現好像剛剛的更改對于某些數據未起作用,但其實是事務B剛插入進來的,讓用戶感覺很魔幻,感覺出現了幻覺,這就叫幻讀。 個人理解:并發事務中針對其他事務添加操作并且提交了事務,比如自己在查詢用戶數量時上一秒查詢 事務隔離級別: 1. 讀未提交(READ UNCOMMITTED) 2. 讀提交 (READ COMMITTED) 3. 可重復讀 (REPEATABLE READ) 4. 串行化 (SERIALIZABLE) ``` ![](https://img.kancloud.cn/83/f4/83f486e66c8456654b385d468f2b31a6_387x224.png) ``` 從上往下,隔離強度逐漸增強,性能逐漸變差。采用哪種隔離級別要根據系統需求權衡決定,其中,**可重復讀**是 MySQL 的默認級別。 事務隔離其實就是為了解決上面提到的臟讀、不可重復讀、幻讀這幾個問題,下面展示了 4 種隔離級別對這三個問題的解決程度。 MySQL 的 InnoDB 引擎才支持事務,其中可重復讀是默認的隔離級別。 讀未提交和串行化基本上是不需要考慮的隔離級別,前者不加鎖限制,后者相當于單線程執行,效率太差。 讀提交解決了臟讀問題,行鎖解決了并發更新的問題。并且 MySQL 在可重復讀級別解決了幻讀問題,是通過行鎖和間隙鎖的組合 Next-Key 鎖實現的。 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看