<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國際加速解決方案。 廣告
                事務就是一組原子性的SQL查詢,或者說一個獨立的邏輯工作單元。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向數據的資源。如果其中任何一條語句因為崩潰或其他原因無法執行,那么所有語句都不會執行。也就是說,事務內的語句,要么全部執行成功,要么全部執行失敗。 ### **事務的四大特性(ACID):** 1. 原子性(atomicity):一個事務必須視為一個不可分割的最小工作單元,整個事務中的所有操作要么全部提交成功,要么全部失敗回滾,對于一個事務來說,不可能只執行其中的一部分操作,這就是事務的原子性。 2. 隔離性(isolation):一個事務所做的修改在最終提交以前,對其他事務是不可見的 3. 持久性(durability):一旦事務提交,則其所做的修改就會永久保存到數據庫中。此時即使系統崩潰,修改的數據也不會丟失。 4. 一致性(consistency):數據庫總數從一個一致性的狀態轉換到另一個一致性的狀態 ### **四種隔離級別:** 數據庫事務的四種隔離級別,由低到高分別為 1. 讀未提交(Read uncommitted) :一個事務可以讀取另一個未提交事務的數據。 2. 讀提交(Read committed) :一個事務要等另一個事務提交后才能讀取數據。 3. 重復讀(Repeatable read):在開始讀取數據(事務開啟)時,不再允許修改操作 4. 串行化(serializable) :Serializable 是最高的事務隔離級別,在該級別下,事務串行化順序執行,可以避免臟讀、不可重復讀與幻讀。但是這種事務隔離級別效率低下,比較耗數據庫性能。 參考:https://blog.csdn.net/csdnxingyuntian/article/details/57081233 ### **事務的并發問題** 1. 臟讀:事務A讀取了事務B更新的數據,事務B回滾操作,那么A讀取到的數據是臟數據。 2. 不可重復讀:事務A多次讀取同一數據,事務B在事務A多次讀取的過程中,對數據做了更新并提交,導致事務A多次讀取同一數據時,結果不一致。(不可重復讀對應的是update操作) 3. 幻讀:在一個事務內,兩次查詢的數據條數不一致。幻讀和不可重復讀有些類似,同樣是兩次查詢過程中,不同的是,幻讀是由于其他事務做了插入記錄的操作,導致記錄數增加。(幻讀對應的是insert操作) <table> <thead> <th width="40%">事務隔離級別</th> <th>臟讀</th> <th>不可重復讀</th> <th>幻讀</th> </thead> <tbody> <tr> <td>讀未提交(read-uncommitted)</td> <td>是</td> <td>是</td> <td>是</td> </tr> <tr> <td>讀提交(read-committed)</td> <td>否</td> <td>是</td> <td>是</td> </tr> <tr> <td>可重復讀(repeatable-read)</td> <td>否</td> <td>否</td> <td>是</td> </tr> <tr> <td>串行化(serializable</td> <td>否</td> <td>否</td> <td>否</td> </tr> </tbody> </table> > THINKPHP5框架的事務操作實例: ``` // 啟動事務 Db::startTrans(); try { Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事務 Db::commit(); } catch (\Exception $e) { // 回滾事務 Db::rollback(); } ```
                  <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>

                              哎呀哎呀视频在线观看