阿摩線上測驗 登入

申論題資訊

試卷:109年 - 109 調查、國家安全情報特種考試_三等_資訊科學組、資訊組:資料庫應用#90034
科目:公職◆資料庫應用
年份:109年
排序:0

題組內容

二、

申論題內容

⑵在同步控制中結果等價(Result Equivalent)與衝突等價(Conflict Equivalent)意義上有何差異?並請說明下列二個排程是否具備衝突等 價及說明原因,其中 T1與 T2代表不同的兩個交易,read()代表讀取資 料,write()代表寫入資料,→代表事件執行先後順序。(15分)
 Schedule A: T1:read(x) → T1:read(y) → T2:read(x) → T1:write(x) → T1:write(y) → T2:write(x) → T1:commit → T2:read(y) → T2:write(y) →T2:commit
 Schedule B: T1:read(x) → T1:read(y) → T1:write(x) → T2:read(x) → T1:write(y) → T2:read(y) → T1:commit → T2:write(x) → T2:write(y) →T2:commit

詳解 (共 2 筆)

詳解 提供者:hchungw

在同步控制中,結果等價(Result Equivalent)和衝突等價(Conflict Equivalent)是兩個重要的概念,用於評估不同排程之間的等價性。

結果等價(Result Equivalent)

定義: 兩個排程是結果等價的,如果它們在相同的初始狀態下運行,最終會產生相同的結果,即數據庫的最終狀態相同。

衝突等價(Conflict Equivalent)

定義: 兩個排程是衝突等價的,如果它們在運行過程中所有的衝突操作(即讀取和寫入同一個數據項的操作)發生的順序完全相同。

衝突操作

  • 兩個操作是衝突的如果:
    • 它們來自不同的交易
    • 它們操作同一個數據項
    • 至少有一個操作是寫操作

分析 Schedule A 和 Schedule B 的衝突等價性

Schedule A:

yaml
複製程式碼
T1: read(x) T1: read(y) T2: read(x) T1: write(x) T1: write(y) T2: write(x) T1: commit T2: read(y) T2: write(y) T2: commit

Schedule B:

yaml
複製程式碼
T1: read(x) T1: read(y) T1: write(x) T2: read(x) T1: write(y) T2: read(y) T1: commit T2: write(x) T2: write(y) T2: commit

衝突等價性檢查

  1. 分析 Schedule A 的衝突操作

    • ?1:?????(?)T1:write(x)?2:????(?)T2:read(x):衝突,T1 在 T2 之前
    • ?1:?????(?)T1:write(x)?2:?????(?)T2:write(x):衝突,T1 在 T2 之前
    • ?1:?????(?)T1:write(y)?2:????(?)T2:read(y):衝突,T1 在 T2 之前
    • ?1:?????(?)T1:write(y)?2:?????(?)T2:write(y):衝突,T1 在 T2 之前
  2. 分析 Schedule B 的衝突操作

    • ?1:?????(?)T1:write(x)?2:????(?)T2:read(x):衝突,T1 在 T2 之前
    • ?1:?????(?)T1:write(y)?2:????(?)T2:read(y):衝突,T1 在 T2 之前
    • ?1:?????(?)T1:write(x)?2:?????(?)T2:write(x):衝突,T1 在 T2 之前
    • ?1:?????(?)T1:write(y)?2:?????(?)T2:write(y):衝突,T1 在 T2 之前

結論

從衝突等價性來看,Schedule A 和 Schedule B 是衝突等價的,因為它們所有衝突操作的順序完全相同。在兩個排程中,所有衝突操作(包括讀取和寫入同一個數據項的操作)的順序保持一致。因此,這兩個排程是衝突等價的。

詳解 提供者:114年高考上榜

結果等價(Result Equivalent)是指,當兩個排程所執行的所有交易,最後所得到的資料庫狀態相同,則這兩個排程是結果等價的。而衝突等價(Conflict Equivalent)則是指,當兩個排程所包含的交易之間並不存在衝突操作,而且交易之間的順序可以互換,則這兩個排程是衝突等價的。

 
就上述兩個排程而言,可以發現Schedule A與Schedule B之間存在衝突操作,如下:
 
Schedule A:T1:read(x) → T1:read(y) → T2:read(x) → T1:write(x) → T1:write(y) → T2:write(x) → T1:commit → T2:read(y) → T2:write(y) →T2:commit
Schedule B:T1:read(x) → T1:read(y) → T1:write(x) → T2:read(x) → T1:write(y) → T2:read(y) → T1:commit → T2:write(x) → T2:write(y) →T2:commit
因此,這兩個排程不具備衝突等價性。
 
在Schedule A中,T1和T2交錯地讀寫資料,導致兩個交易之間存在衝突操作,因此它們不能互換順序。而在Schedule B中,T1先讀寫x,然後T2才進行讀寫x操作,這兩個交易之間也存在衝突操作。因此,這兩個排程不具備衝突等價性。