checkpoint(sqlserver數據庫檢查點)


關於檢查點的解釋:

 
出於性能方面的考慮,數據庫引擎對內存(緩沖區緩存)中的數據庫頁進行修改,但在每次更改后不將這些頁寫入磁盤。相反,數據庫引擎定期發出對每個數據庫的檢查點命令。“檢查點”將當前內存中已修改的頁(稱為“臟頁”)和事務日志信息從內存寫入磁盤,並記錄有關事務日志的信息。
數據庫引擎支持幾種類型的檢查點:自動、間接、手動和內部。下表總結了檢查點類型。
1:自動
3:sqlserver數據庫檢查點
數據庫實例級別檢查點設置為0標識檢查點將會自動發生
2:手動設置后就會間接發生
3:sqlserver數據庫檢查點

上圖將檢查點設置為2分鍾發生一次,兩分鍾將會自動執行檢查點.
3:手動
3:sqlserver數據庫檢查點
后面的單位是秒,多少秒內自動嘗試發生檢查點.
4:內部:由各種服務器操作(如備份和數據庫快照創建)發出,以確保磁盤映像與日志的當前狀態匹配。
A:已經使用 ALTER DATABASE 添加或刪除了數據庫文件。
進行了數據庫備份。
B:創建了數據庫快照,不管 DBCC CHECK 是顯式還是內部執行。
C:執行了需要關閉數據庫的活動。例如,AUTO_CLOSE 設置為 ON 並且關閉了數據庫的最后一個用戶連接,或者執行了需要重新啟動數據庫的數據庫選項更改。
D:通過停止 SQL Server (MSSQLSERVER) 服務停止了 SQL Server 實例。任一操作都會在 SQL Server 實例的每個數據庫中生成一個檢查點。
E:使 SQL Server 故障轉移群集實例 (FCI) 脫機
當發生以上操作的時候,數據庫檢查點將會自動發生.
 
 
我們可以想象,當檢查點頻繁發生的時候,就會造成IO的讀寫頻繁,這樣不但不能夠提高效率,相反還會降低,而且還會影響磁盤的壽命.所以檢查點的機制還是很有作用的.
當檢查點發生的時候,他會對sqlserver的緩沖區的所有臟頁進行處理,寫入磁盤文件,當然有一些修改的事物是沒有commit的,但是還是會被寫入到數據文件當中,發生IO寫,所以說,這個機制其實就是把臟數據寫入磁盤,而不管你的數據是有沒有提交.未提交的數據就在后期會做UNDO將事物回滾,
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM