回答
從Understanding How Restore and Recovery of Backups Work in SQL Server
甲恢復是多相過程。的恢復 可能階段包括 數據複製,重做(前滾), 和撤消(回滾)階段:
- 的數據複製階段涉及複製所有數據,日誌和 索引頁從數據庫的備份媒體 到數據庫 文件。
- 重做階段將已記錄的事務應用於從
備份中複製的數據,以將該數據
前滾到恢復點。此時, 數據庫通常具有未提交的
事務並處於不可用的
狀態。在這種情況下,撤銷階段是 作爲恢復數據庫的一部分所需的。- 作爲恢復的第一部分的撤消階段回退任何未提交的事務並使
數據庫可供用戶使用。
回滾階段後,後續的 備份無法恢復。
您可能會發現這個文件有意思:恢復Simple overview of the SQL Server Recovery Process
階段
恢復算法根據各地在事務日誌中的最後一個檢查點3個階段。
階段1:分析。從事務日誌的最後一個檢查點開始。此通道確定並構造一個髒頁表(DPT),其中包含SQL Server停止時可能會變髒的頁面。活動事務表由SQL Server停止時的未提交事務構建。
階段2:重做。此階段將數據庫返回到SQL服務停止時的狀態。這個前向passbeing最古老的未提交交易的起點。 DPT中的最小日誌序列名稱(每個日誌記錄標有LSN)是SQL Server第一次預計必須重做頁面上的操作,重新開始記錄的操作從最早的打開事務開始,以便必要的鎖可以獲得。
階段3:撤銷:這裏,在階段1中識別的活動事務(在SQL Server被暫停時未提交)的列表單獨回滾。 SQL Server遵循每個事務的事務日誌中條目之間的鏈接。在SQL Server停止時沒有提交的任何事務都被撤消。
恢復可以在恢復數據庫時完成,但也可以在數據庫啓動時完成(崩潰恢復)。
關於重做和提交之間的區別: 提交僅僅意味着您已經生成了指示事務完成並將其刷新到磁盤的日誌記錄(它現在是一個持久數據)。這並不意味着您在事務中更改的數據將寫入磁盤。根據緩衝區和檢查點的壓力,數據將被刷新爲異步。
因此,當SQL崩潰並重新啓動時,您剛剛丟失了所有未刷新的數據更改。因此,您現在必須重做自上次刷新以來的所有日誌記錄。這是恢復階段的重做階段(階段2)。在完成之前,您的數據庫將不可用。
恢復的階段:
一個恢復是一個多階段過程。的恢復可能階段包括數據複製,重做(前滾),並撤消(回滾)階段:
- 的數據複製階段涉及複製所有數據,日誌和索引 從數據庫的備份媒體到數據庫文件的頁面。
- 重做階段將已記錄的事務應用於從備份複製的 數據以將該數據前滾到恢復點。在這一點上,在 ,數據庫通常具有未提交的事務並且處於不可用狀態的 。在這種情況下,需要撤銷階段作爲恢復數據庫的部分 。
- 撤銷階段(這是恢復的第一部分)會回滾任何未提交的事務並使數據庫對用戶可用。 回滾階段後,後續備份無法恢復。
對於您可以參考以下鏈接瞭解更多信息:
https://technet.microsoft.com/en-us/library/ms191455(v=sql.105).aspx
- 1. 三階段提交
- 2. MySQL groupby分階段
- 3. 傀儡重啓分階段
- 4. 實施第三階段縮小階段後稱爲合併
- 5. Azure - 在階段
- 6. 排序階段
- 7. 如何在其父階段爲fullScreenMode時將階段製作爲Aplication_Modal階段?
- 8. 瞭解執行階段和渲染階段
- 9. JavaFX2:從本身內部關閉一個階段(子階段)
- 10. 影子卷 - 最後階段
- 11. 如何階段,playframework
- 12. TortoiseHG階段錯誤
- 13. 兩階段提交
- 14. Django Form 2階段
- 15. PreRender階段很慢
- 16. 獲取Libgdx階段
- 17. Yii2:在POST階段
- 18. 多階段啓動
- 19. 農曆階段API
- 20. skip jsf lifecylce階段
- 21. AS3刷新階段
- 22. 階段Event.ENTER_FRAME與CREATION_COMPLETE
- 23. YCSB清理階段
- 24. Android:3階段SlidingDrawer
- 25. gradle測試階段?
- 26. 分階段文件在Git
- 27. 我想在正方體OCR工具階段圖像分析來觀察階段
- 28. 從動作階段傳遞值來呈現portlet中的階段
- 29. 未添加到階段配置列表的自定義階段
- 30. 如何關閉初級階段關閉時的所有階段?
但問題是什麼?我相信你可以自己搜索並找到它們 –
實際上重做和提交有什麼區別?這裏有些困惑嗎? – user186246