一旦用戶發出提交命令,則該事務是寫入到諸如 硬盤,這是在確認到之前進行存儲的非易失性介質上的數據庫文件第一 用戶發現保存 。如果數據庫在保存之前崩潰,則在下次數據庫重新啓動時,事務日誌上的數據仍爲 ,但 任何未提交的更改都會撤消或回滾。
- 說,我開始交易
- 消防第一插入語句;
- 第二次插入聲明;
- commit;
- 事務結束
現在,當用戶沒有在步驟4,
- 所有插入語句在時間T1寫入事務日誌文件系統提交
- 確認發送到用戶的交易儘管它將在時間T2的步驟3中完成
- 現在在時間T3異步實現了trasanctions
以上理解正確嗎?如果是,我的問題爲什麼不在第3步之後發送確認?另外如果數據庫機器在T2之前崩潰,那麼事務將不會持久? 所以原木,我們只是保證如果數據庫崩潰的B/W時間T2和T3那麼我們就可以確保耐久性
第二種理解 我相信所有事務的發言可以儘快日誌寫成的語句被激發,而不是在提交時做這件事。一旦提交完成,事務日誌將被標記爲提交併發送確認。現在即使數據庫確認後崩潰,數據庫將確保從事務日誌寫入數據庫文件。因此,基本上,不是在提交時一次性寫入所有事務語句,而是在它們觸發時在日誌中寫入語句。在提交的時候,它只是標誌着這些交易的承諾,最終將在DB塊寫入原木
這個問題從Oracle的角度