<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/2018/12/dbms-schedules/](https://beginnersbook.com/2018/12/dbms-schedules/) 我們知道[事務](https://beginnersbook.com/2017/09/transaction-management-in-dbms/)是一組指令,這些指令在數據庫上執行操作。當多個事務同時運行時,需要有一個執行操作的序列,因為一次只能對數據庫執行一個操作。這一系列操作稱為 **調度** 。 讓我們舉個例子來了解 DBMS 中的調度是什么。 ## DBMS 調度示例 以下操作順序是調度。這里我們有兩個事務`T1`和`T2`同時運行。 此調度確定將在數據庫上執行的操作的確切順序。在這個例子中,事務`T1`的所有指令都在事務`T2`的指令之前執行,但是這并不總是必要的,我們可以有各種類型的調度,我們將在本文中討論。 ``` T1 T2 ---- ---- R(X) W(X) R(Y) R(Y) R(X) W(Y) ``` ## DBMS 中的調度類型 我們在 DBMS 中有各種類型的調度。讓我們逐一討論它們。 ![Types of Schedules in DBMS](https://img.kancloud.cn/65/c4/65c441a32509ce33213cfe7de84ff1da_600x400.jpg) ### 串行調度 在**串行調度**中,在開始執行另一個事務之前完全執行事務。換句話說,您可以說在串行調度中,事務在當前正在運行的事務完成執行之前不會開始執行。這種類型的事務執行也稱為**非交錯**執行。我們上面看到的例子是連續調度。 讓我們再看一個例子。 **串行調度示例** 這里`R`表示讀操作,`W`表示寫操作。在此示例中,事務`T2`在事務`T1`完成之前不會開始執行。 ``` T1 T2 ---- ---- R(A) R(B) W(A) commit R(B) R(A) W(B) commit ``` ### 嚴格調度 在嚴格調度中,如果事務的寫入操作先于另一個事務的沖突操作(讀取或寫入操作),則此類事務的提交或中止操作也應該在其他事務的沖突操作之前。 讓我們舉個例子。 **嚴格調度示例** 假設我們有兩個事務`Ta`和`Tb`。事務`Ta`的寫入操作在事務`Tb`的讀取或寫入操作之前,因此事務`Ta`的提交或中止操作也應該在讀取或寫入`Tb`之前。 ``` Ta Tb ----- ----- R(X) R(X) W(X) commit W(X) R(X) commit ``` 這里,`Ta`的寫操作`W(X)`在`Tb`的沖突操作(讀或寫操作)之前,因此`Tb`的沖突操作必須等待`Ta`的提交操作。 ### 無級聯調度 在無級聯調度中,如果事務要對某個值執行讀操作,則必須等到執行寫入該值的事務提交。 **無級聯調度示例** 例如,假設我們有兩個事務`Ta`和`Tb`。`Tb`將在`Ta`的`W(X)`之后讀取值`X`,然后`Tb`必須在讀取`X`之前等待事務`Ta`的提交操作。 ``` Ta Tb ----- ----- R(X) W(X) W(X) commit R(X) W(X) commit ``` ### 可恢復的調度 在可恢復調度中,如果事務正在讀取已由某個其他事務更新的值,則此事務只能在提交正在更新值的其他事務之后提交。 **可恢復調度示例** 這里`Tb`在`Ta`使用`W(X)`在`X`中進行了更改之后對`X`執行讀取操作,因此`Tb`只能在`Ta`的提交操作之后提交。 ``` Ta Tb ----- ----- R(X) W(X) R(X) W(X) R(X) commit commit ```
                  <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>

                              哎呀哎呀视频在线观看