資料庫基礎

許多DBMS在更新資料時,會把更新內容記錄在日誌中,並在寫入資料庫本體之前,先把日誌寫入非揮發性儲存裝置(WAL:預寫式日誌)。採用此方式的主要理由是下列何者?

  1. A即使發生故障,也能依據日誌重做已提交的更新、取消未提交的更新,回復到正確的狀態
  2. B先寫日誌可以讓資料庫本體的容量變小
  3. C在SELECT敘述的搜尋中,可以把日誌當作索引使用
查看答案與解析

正確答案:A. 即使發生故障,也能依據日誌重做已提交的更新、取消未提交的更新,回復到正確的狀態

為了效能,資料庫本體的頁面在記憶體上的緩衝區更新後,要過一段時間才會寫入儲存裝置。因此在發生故障的瞬間,可能混雜著已提交卻尚未寫入本體的更新,以及尚未提交卻已寫入本體的更新。若把更新前與更新後的值記錄在日誌中,並在寫入本體之前先寫入日誌,故障後就能依據日誌重做已提交的更新(前滾,REDO),並取消未提交的更新(回復,UNDO),回到正確的狀態。當該交易的提交紀錄寫入日誌時,即可視為提交完成,因此不必每次都立即寫入本體的頁面,也能維持效能。這個機制支撐著ACID特性中的原子性與持久性。

  • A. 正確。先寫入日誌,故障後就能以REDO與UNDO回到正確的狀態。
  • B. 日誌與本體分開記錄,並不會讓本體的容量變小。
  • C. 日誌是用來從故障中復原的紀錄,不會當作搜尋的索引使用。
練習這個領域 前往領域頁面

相關計算工具

資料庫基礎的其他題目

  1. 有交易T1~T5,在發生故障前取了一次檢查點。T1在檢查點之前開始並提交。T2與T3在檢查點之前開始,T2在檢查點之後、故障之前提交,T3在故障時尚未提交。T4與T5在檢查點之後開始,T4在故障前提交,T5尚未提交。故障後的復原中,需要使用日誌進行前滾(Rollforward)的交易是下列何者?
  2. 在有100萬筆資料列的會員表格之會員編號欄位上建立了B+樹索引。一般可預期的效果與代價組合,下列何者正確?
  3. 在有100萬筆資料列的日本會員表格中,考慮分別在會員編號(全部不同)、都道府縣(47種)、性別(2種,大約各半)欄位上建立B+樹索引。在WHERE子句中指定一個欄位的值進行搜尋時,索引效果可能最小的是哪個欄位?
  4. 在稱為NoSQL的資料庫中,關於鍵值(Key-value)型的特徵,下列何者一般而言正確?
  5. 關於在多台伺服器上放置資料副本的分散式資料庫,下列何者是對CAP定理的適當說明?