Navicat 部落格

2018 年 2 月 23 日,由 Robert Gravelle 撰寫

防止資料丟失、損壞和災難(人為和自然)的最佳方法之一是定期執行備份,這廣泛知識遠遠超出資料庫管理員(DBA)圈子。最常見的備份類型是完整備份、遞增備份和差異備份。特別是差異備份在企業的備份策略中發揮著越來越重要的作用,尤其對於那些執行大型資料庫的公司。差異備份帶來的難題是很難判斷最後一次完整備份之後後已變更的資料量。此問題的答案對於決定是進行完整備份還是差異備份是十分重要的。在這篇文章中,我們將看到 SQL Server 2017 如何幫助解決這個問題。

備份類型說明

在開始仔細判斷最後一次完整備份之後後已變更的資料量之前,讓我們花點時間來回顧三種主要類型的備份。

完整備份

完整備份是最基本的備份類型。顧名思義,這種類型的備份將所有資料複製到另一個資料庫或儲存媒體。備份整個資料集使得在有需要時可以比較簡單地還原資料。但是,執行完整備份可能需要很長時間,具體取決於資料數量,並且需要足夠的空間來儲存它。

遞增備份

遞增備份只會複製最後一次完整備份之後已變更的資料。通常使用時間戳記並與最後一次備份的時間戳記進行比較。由於遞增備份只會復制最後一次備份之後的資料,因此可以根據需要隨時執行。遞增備份的好處是複製的資料量比完整備份少。因此,遞增備份將更快完成,並且需要更少的媒體來儲存備份資料。

差異備份

差異備份將復製最後一次完整備份之後已變更的所有資料,與第一次執行時的遞增備份類似。但是,在連續執行時,它將繼續複製上一次完整備份之後已變更的所有資料。因此,在後續的執行中,它將儲存比遞增備份更多的資料,但通常都會遠低於完整備份。

SQL Server 中的分頁、範圍與系統動態管理檢視(Dynamic Management Views,DMVs)

SQL Server 中儲存資料的基本單位是分頁。資料庫中配置給資料檔 (.mdf 或 .ndf) 的磁碟空間會邏輯區分為從 0 連續編號到 n 的 8 KB 分頁。磁盤 I/O 作業在分頁層次上橾作。也就是說,SQL Server 會讀取或寫入整個資料分頁。每頁的大小為 8 KB,這意味著 SQL Server 資料庫是每 MB 有 128 個分頁。

範圍即管理空間中的基本單位。一個範圍是 8 個連續實體分頁,也就是 64 KB。這意味著 SQL Server 資料庫每 MB 有 16 個範圍。

系統動態管理檢視(DMVs)和函式傳回伺服器狀態資訊,這項資訊可用來監視伺服器執行個體的健全狀況、診斷問題和調整效能。SQL Server 2017 版本的 DMV sys.dm_db_file_spavce_usage 有一個新欄 modified_extent_page_count。這個新欄顯示最後一次完整備份之後已變更的頁數。

SELECT total_page_count, allocated_extent_page_count
     , unallocated_extent_page_count, modified_extent_page_count
FROM Sys.dm_db_file_space_usage
GO

以下是在完整備份後執行上述查詢可能產生的結果:

total_page_count    allocated_extent_page_count    unalocated_extent_page_count    modified_extent_page_count
-------------------------------------------------------------------------------------------------------
1024 320 704 64

如果我們現在要建立一個新資料表並插入一列資料,當重新執行查詢時,我們將得到一個修改後的輸出:

total_page_count    allocated_extent_page_count    unalocated_extent_page_count    modified_extent_page_count
-------------------------------------------------------------------------------------------------------
1024 320 704 128

你可以看到 modified_extent_page_count 已從 64 變為 128。在下一篇文章中,我們將學習如何解讀這些結果。

Navicat 文章
頻道記錄
分享
部落格封存檔