資料庫基礎
許多DBMS在更新資料時,會把更新內容記錄在日誌中,並在寫入資料庫本體之前,先把日誌寫入非揮發性儲存裝置(WAL:預寫式日誌)。採用此方式的主要理由是下列何者?
- A即使發生故障,也能依據日誌重做已提交的更新、取消未提交的更新,回復到正確的狀態
- B先寫日誌可以讓資料庫本體的容量變小
- C在SELECT敘述的搜尋中,可以把日誌當作索引使用
查看答案與解析
正確答案:A. 即使發生故障,也能依據日誌重做已提交的更新、取消未提交的更新,回復到正確的狀態
為了效能,資料庫本體的頁面在記憶體上的緩衝區更新後,要過一段時間才會寫入儲存裝置。因此在發生故障的瞬間,可能混雜著已提交卻尚未寫入本體的更新,以及尚未提交卻已寫入本體的更新。若把更新前與更新後的值記錄在日誌中,並在寫入本體之前先寫入日誌,故障後就能依據日誌重做已提交的更新(前滾,REDO),並取消未提交的更新(回復,UNDO),回到正確的狀態。當該交易的提交紀錄寫入日誌時,即可視為提交完成,因此不必每次都立即寫入本體的頁面,也能維持效能。這個機制支撐著ACID特性中的原子性與持久性。
- A. 正確。先寫入日誌,故障後就能以REDO與UNDO回到正確的狀態。
- B. 日誌與本體分開記錄,並不會讓本體的容量變小。
- C. 日誌是用來從故障中復原的紀錄,不會當作搜尋的索引使用。