我對如何在數據庫系統中實現「常見」數據庫事務感興趣,例如MySQL。當數據庫事務被損壞時是否有突破點?
假設實際將數據寫入物理數據庫存儲不是原子操作(現在以時鐘週期來講),我不應該通過例如在某些情況下撕開電源電纜來破壞事務選擇時刻?
我對如何在數據庫系統中實現「常見」數據庫事務感興趣,例如MySQL。當數據庫事務被損壞時是否有突破點?
假設實際將數據寫入物理數據庫存儲不是原子操作(現在以時鐘週期來講),我不應該通過例如在某些情況下撕開電源電纜來破壞事務選擇時刻?
如果仔細編寫數據庫系統,應該沒有時間點停電可能會損壞數據,並且發生停電時,不應丟失承諾的數據。
在實際更新數據之前,rdbms首先將數據寫入事務日誌。發生崩潰後,它會重播日誌,將日誌中的所有待處理更改複製到數據庫中,並回滾日誌中尚未完成的所有事務。只有在硬盤向日志報告完成的寫入操作後,提交纔會報告爲成功。
數據庫在更新時寫入日誌很常見。然後它可以告訴它沒有設法完成其作爲一個事務的操作,並使用日誌來回滾更改。
數據庫按照ACID屬性。無論什麼時候爆炸,至少有一種方法可以回滾到已知的正確狀態。
對不起 - 在重新啓動時,它會檢查日誌並回滾 - 不是用電源:) – Davy 2009-10-07 20:34:14