資料庫基礎

交易T1對資料列A加上排他鎖後要求資料列B的鎖,T2對資料列B加上排他鎖後要求資料列A的鎖,結果兩者都無法繼續。DBMS偵測到這個狀態時,一般的處理方式是下列何者?

  1. A讓兩者繼續等待,其中一方的鎖終究會自然解除
  2. B回復其中一筆交易使其解除鎖,讓另一筆交易繼續進行
  3. C將T1與T2的更新都直接提交
查看答案與解析

正確答案:B. 回復其中一筆交易使其解除鎖,讓另一筆交易繼續進行

兩筆以上的交易互相等待對方解除所持有的鎖,導致誰都無法繼續的狀態稱為死結。這個狀態光靠等待無法解除,因此許多DBMS會從表示哪筆交易在等待哪筆交易的等待圖出現循環等跡象偵測死結,並回復其中一筆交易(犧牲者)使其解除鎖。被回復的交易之後再重新執行。也有為等待鎖的時間設定上限(逾時),超過就回復的方法。預防方面,讓所有交易都依固定順序加鎖,例如先資料列A再資料列B,是有效的方法。

  • A. 彼此都在等待對方,光是等待並不會解除鎖。
  • B. 正確。回復其中一筆交易使其解除鎖,是一般的處理方式。
  • C. 要提交必須取得所需的鎖並完成處理,在互相等待的狀態下無法提交。
練習這個領域 前往領域頁面

相關計算工具

資料庫基礎的其他題目

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