資料庫基礎
交易T1對某筆資料列加上共享鎖並正在讀取。T2對這筆資料列要求共享鎖,T3要求排他鎖。在T1解除鎖之前的期間,下列何者正確?
- AT2能立即取得鎖,但T3要等待
- BT2與T3都要等待
- CT2與T3都能立即取得鎖
查看答案與解析
正確答案:A. T2能立即取得鎖,但T3要等待
共享鎖是讀取資料時所加的鎖,其他交易也能對同一資料加上共享鎖同時讀取,但無法加上用於寫入的排他鎖。排他鎖是更新資料時所加的鎖,在持有期間,其他交易既不能加共享鎖也不能加排他鎖。在這個例子中,T1的共享鎖與T2的共享鎖相容,因此T2能立即取得鎖並讀取。T3的排他鎖與T1的共享鎖不相容,因此要等到T1解除鎖(T2也持有共享鎖時,還要等T2解除)。像這樣利用鎖防止同時執行之交易彼此干擾,稱為並行控制。
- A. 正確。共享鎖彼此相容,排他鎖與共享鎖不相容。
- B. 共享鎖彼此相容,因此T2不必等待。
- C. 排他鎖與共享鎖不相容,因此T3要等待。