<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國際加速解決方案。 廣告
                # DBMS 中的并發控制 > 原文: [https://beginnersbook.com/2017/09/concurrency-control-in-dbms/](https://beginnersbook.com/2017/09/concurrency-control-in-dbms/) 當同時運行多個事務時,可能會發生沖突,從而使數據庫處于不一致狀態。為了處理這些沖突,我們需要 DBMS 中的并發控制,它允許事務同時運行,但以這樣的方式處理它們,以便數據的完整性保持不變。 我們舉一個例子來理解我在這里說的話。 ## 沖突示例 你和你的兄弟有一個聯合銀行賬戶,你可以從中提取資金。現在讓我們說你們兩個同時去同一家銀行的不同分行嘗試提取 5000 INR,你的聯名賬戶只有 6000 余額。現在,如果我們沒有并發控制,你們兩個可以同時獲得 5000 INR,但是一旦兩個事務完成,賬戶余額將是-4000,這是不可能的,并使數據庫處于不一致狀態。 我們需要以某種方式控制事務的東西,允許事務同時運行,但保持數據的一致性以避免此類問題。 ## 沖突解決方案:鎖 鎖是一種確保維護數據完整性的機制。在訪問數據時可以放置兩種類型的鎖,以便在我們處理數據時并發事務不會改變數據。 1. 共享鎖(`S`) 2. 獨占鎖(`X`) **1\. 共享鎖(`S`)**:當我們讀取數據時放置共享鎖,可以在數據上放置多個共享鎖,但是當放置共享鎖時,不能放置獨占鎖。 例如,當兩個事務正在讀取史蒂夫的賬戶余額時,讓他們通過放置共享鎖來讀取,但如果另一個事務想要通過放置獨家鎖來更新史蒂夫的賬戶余額,則在讀取完成之前不要允許它。 **2\. 獨占鎖(`X`)**:當我們想要讀取和寫入數據時,放置獨占鎖。此鎖允許讀取和寫入操作。一旦將此鎖放在數據上,就不會對數據放置其他鎖(共享或獨占),直到釋放獨占鎖。 例如,當一個事務想要更新史蒂夫的賬戶余額時,讓它通過放置`X`鎖來做,但如果第二個事務想要讀取數據(`S`鎖)不允許它,如果另一個事務想要寫入數據(`X`鎖)也不允許這樣做。 所以基于此,我們可以創建一個這樣的表: ### 鎖兼容性矩陣 ``` __________________________ | | S | X | |------------------------- | S | True | False | |------------------------- | X | False | False | -------------------------- ``` **如何讀取這個矩陣?:** 有兩行,第一行表示當放置`S`鎖時,可以獲取另一個`S`鎖,因此它被標記為`true`但是沒有可以獲得獨占鎖標記為假。 在第二行中,當獲取`X`鎖時,既不能獲取`S`也不能獲得`X`鎖,因此兩者都標記為假。
                  <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>

                              哎呀哎呀视频在线观看