資料庫基礎
有交易T1~T5,在發生故障前取了一次檢查點。T1在檢查點之前開始並提交。T2與T3在檢查點之前開始,T2在檢查點之後、故障之前提交,T3在故障時尚未提交。T4與T5在檢查點之後開始,T4在故障前提交,T5尚未提交。故障後的復原中,需要使用日誌進行前滾(Rollforward)的交易是下列何者?
- AT3與T5
- BT1、T2、T4
- CT2與T4
查看答案與解析
正確答案:C. T2與T4
在檢查點時,會把到當時為止在記憶體上更新過的資料庫頁面寫入儲存裝置,並把這件事記錄在日誌中。因此,在檢查點之前提交的T1,其更新已經反映在資料庫本體,不需要復原處理。在檢查點之後、故障之前提交的T2與T4,雖然已完成提交,但部分更新可能尚未寫入本體,因此要使用日誌中更新後的值重做(前滾)。在故障時尚未提交的T3與T5,若有寫入本體的中途更新,要使用日誌中更新前的值取消(回復)。像T3這樣在檢查點之前開始的交易,只要尚未提交,也是取消的對象。事先取檢查點,就不必從頭追溯所有日誌,能縮短復原的時間。
- A. T3與T5尚未提交,是回復的對象。
- B. T1在檢查點之前已提交,更新已反映在本體,因此不在對象內。
- C. 正確。對在檢查點之後、故障之前提交的T2與T4進行前滾。