免費開始練習
調查局三等申論題 114年 [資訊科學組] 資料庫應用

第 一 題

📖 題組:
假設資料庫對交易(Transaction)採用基本的兩階段鎖(basic two-phrase locking)的機制,在這種機制下有可能產生死鎖(deadlock)。假設 read_item(X) 代表交易對資料項目 X 讀取,write_item(X) 代表交易對資料項目 X 寫入新值,read_lock(X) 代表交易對 X 下 read_lock,write_lock(X) 代表交易對 X 下 write_lock,其餘類推。T1、T2 兩個交易原先期待進行的內容如下表左右兩欄。實際上系統不是序列化(Serial)排程,而是將交易交織進行。假設在兩個交易交織進行的α排程(Schedule),T2 在時戳(Timestamp)為 1000 時開始,T1 在時戳為 1010 時開始。在這個α排程下,系統偵測到有死鎖產生的可能。
題組圖片
📝 此題為申論題,共 2 小題

小題 (一)

請繪出其可能導致死鎖的等待圖(wait-for graph),其中必須標註等待的資源。(5 分)

思路引導 VIP

本題重點在於分析「兩階段鎖(2PL)」機制下,多個交易交織執行時產生的「循環等待(Circular Wait)」。解題時應先找出 T1 與 T2 共同存取的資源(資源 A 與 C),並根據題目給定的啟動順序(T2 先、T1 後)模擬鎖定情形,找出雙方互相等待對方釋放鎖的節點,最後將此等待關係轉換為有向圖(Wait-for Graph)。

🤖
AI 詳解
AI 專屬家教

【解題思路】分析 T1 與 T2 獲取鎖(Lock)的衝突點與時序,推導出導致死鎖的交織排程,進而繪製節點為交易、有向邊為等待資源的等待圖(Wait-for graph)。 【詳解】 已知條件:

小題 (二)

在上述 α排程下,資料庫管理系統有死鎖預防機制(deadlock prevention scheme)以避免死鎖,下列各種不同機制,請說明每個交易分別會發生的情況。
⑴採 Wait-die。(5 分)
⑵採 Wound-wait。(5 分)
⑶採 No waiting。(5 分)
⑷採 Cautious waiting。(5 分)

思路引導 VIP

首先確認交易的時戳大小,判斷誰是老交易(T2,時戳1000)、誰是年輕交易(T1,時戳1010)。接著,因為題目未明示交織排程中是誰先觸發等待,需將死鎖衝突拆分為「T1 請求 T2 的鎖」與「T2 請求 T1 的鎖」兩種可能情境。最後,依據各死鎖預防機制的定義(如 Wait-die 的「老等小死」、Wound-wait 的「老殺小等」、Cautious waiting 的「狀態檢查」)分別闡述 T1 與 T2 會發生的動作(等待 Wait、中止 Abort/Die 或擊傷 Wound)。

🤖
AI 詳解
AI 專屬家教

【破題】 本題考查資料庫並行控制中的死鎖預防機制。依據時戳(Timestamp, TS)判斷:T2 的 TS=1000,T1 的 TS=1010。因 TS(T2) < TS(T1),故 T2 為「老交易(Older)」,T1 為「年輕交易(Younger)」。 在交織排程下,產生死鎖可能的鎖衝突情境分為兩種:

📝 交易死鎖預防機制
💡 利用時戳(Timestamp)打破循環等待,實現死鎖預防。
比較維度 Wait-die (等-死) VS Wound-wait (傷-等)
機制性質 非搶占式 搶占式
老請求少 老交易進入等待 老交易強迫少交易回滾
少請求老 少交易直接回滾 少交易進入等待
💬兩者皆利用時戳順序確保不會形成環狀等待,差別在於誰被強制回滾。
🧠 記憶技巧:老等少死(Wait-die)、老傷少等(Wound-wait)
⚠️ 常見陷阱:容易誤判時戳(Timestamp)大小:數字越小代表交易越早開始,即為「較老」的交易。
兩階段鎖定協定 (2PL) 死鎖偵測與恢復 可序列化排程 (Serializability)

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

資料庫交易管理與並行控制機制
查看更多「[資訊科學組] 資料庫應用」的主題分類考古題