資料庫基礎

關於交易的並行控制所使用的兩階段鎖定(2PL),下列敘述何者正確?

  1. A每筆交易可以任意重複加鎖與解鎖的階段。藉此保證不會發生死結
  2. B讀取時不加鎖,只在寫入時加鎖。藉此能防止包括髒讀在內的所有問題
  3. C每筆交易只要解除了任何一個鎖,之後就不再加新的鎖。藉此保證即使同時執行,結果也與依序執行時相同,但仍可能發生死結
查看答案與解析

正確答案:C. 每筆交易只要解除了任何一個鎖,之後就不再加新的鎖。藉此保證即使同時執行,結果也與依序執行時相同,但仍可能發生死結

在兩階段鎖定(2PL)中,每筆交易有依序取得所需鎖的階段(成長階段)與解除鎖的階段(縮減階段)兩個階段,一旦開始解除鎖,就不再加新的鎖。只要所有交易都遵守這項規則,就能保證同時執行的結果與依某種順序逐一執行交易時相同(可序列化)。不過,它無法防止兩筆交易互相等待對方解鎖的死結,因此DBMS會偵測死結,並以回復其中一筆交易等方式處理。實務上常用直到提交為止都不解除排他鎖的嚴格兩階段鎖定,它也能防止其他交易讀取尚未提交的資料。

  • A. 重複加鎖與解鎖並不是兩階段鎖定。此外,兩階段鎖定也可能發生死結。
  • B. 讀取時不加鎖,就可能讀到其他交易正在更新途中的資料,無法防止髒讀等問題。
  • C. 正確。開始解鎖後不再加新鎖,可保證可序列化,但仍可能發生死結。
練習這個領域 前往領域頁面

相關計算工具

資料庫基礎的其他題目

  1. 交易T1對資料列A加上排他鎖後要求資料列B的鎖,T2對資料列B加上排他鎖後要求資料列A的鎖,結果兩者都無法繼續。DBMS偵測到這個狀態時,一般的處理方式是下列何者?
  2. 許多DBMS在更新資料時,會把更新內容記錄在日誌中,並在寫入資料庫本體之前,先把日誌寫入非揮發性儲存裝置(WAL:預寫式日誌)。採用此方式的主要理由是下列何者?
  3. 有交易T1~T5,在發生故障前取了一次檢查點。T1在檢查點之前開始並提交。T2與T3在檢查點之前開始,T2在檢查點之後、故障之前提交,T3在故障時尚未提交。T4與T5在檢查點之後開始,T4在故障前提交,T5尚未提交。故障後的復原中,需要使用日誌進行前滾(Rollforward)的交易是下列何者?
  4. 在有100萬筆資料列的會員表格之會員編號欄位上建立了B+樹索引。一般可預期的效果與代價組合,下列何者正確?
  5. 在有100萬筆資料列的日本會員表格中,考慮分別在會員編號(全部不同)、都道府縣(47種)、性別(2種,大約各半)欄位上建立B+樹索引。在WHERE子句中指定一個欄位的值進行搜尋時,索引效果可能最小的是哪個欄位?