[問題] [資料庫]關於Commit的觀念問題

作者: skywillnosky (Alfred)   2015-04-12 08:57:42
講義上的定義是
"當交易T中所有存取DB的操作皆已成功執行,
且可能影響資料庫的動作皆已記錄於系統日誌時
此交易即進入委任點"
我想問的是以下的觀念有錯嗎?
(一)
系統日誌有分
1. 還在主記憶體的系統日誌
2. 已經寫到磁碟的系統日誌
(二)
當含有<commit, T>內容的系統日誌寫回磁碟,代表資料庫已經異動
意即還在主記憶體,含有<commit, T>內容的系統日誌,
並未真的異動到資料庫
已經到達commit point的資料,因為非毀滅性故障而不確定
有沒有真的異動到DB時,則要做失敗復原的REDO。
(三)
系統日誌要寫回磁碟需要
1. 分配給系統日誌的主記憶體區塊(Block)滿了
2. 到達檢查點了
而系統日誌強迫寫入是因為情況1. 不是情況2.
如果系統日誌強迫寫入時,主記憶體的系統日誌未到達commit
則被稱為"交易委任前的系統日誌強制寫入"
(四)
只有當含有<commit,T>內容的系統日誌寫回磁碟,
才表示交易T已經到達Commit point
祝大家金榜題名
作者: ko74652 (Reese lin)   2015-04-12 09:46:00
系統日誌有一小塊稱主記憶體 其他都是系統日誌本身commit會把交易記錄寫道系統日誌 但未真正更新到DB內而要真正影像到DB 必須是 系統日誌滿 or check point但是一筆交易commit 代表他永遠有效 若還在系統日誌時候發生當機 那就要從事redo 還是要看是延遲還是立即第二點含有commit就不會再主記憶體了 會在系統日誌你可以把他看成 主記憶體---系統日誌----資料庫這樣會比較容易理解
作者: folksuite (Z)   2015-04-12 09:56:00
何不直接線上學習?http://goo.gl/E6BCpS
作者: skywillnosky (Alfred)   2015-04-12 11:33:00
所以<commit, T>只會存在系統日誌內?

Links booklink

Contact Us: admin [ a t ] ucptt.com