Sql-Server

不同硬體上的 SQL 完整數據庫備份性能

  • November 18, 2021

我編寫了一個相當簡單的腳本,它定期創建數據庫備份,如果已經存在完整備份,則會自動切換到差異備份。

這在我的系統上執行良好。一個 4.5 GB 的數據庫大約需要 10-20 秒來執行第一次完整備份。但是,在另一個系統上測試相同的數據庫需要 8 多分鐘才能完成相同的操作。我預計性能會稍差,因為該系統不如我的強大,但也沒有那麼大的差異。

  • 兩者都執行 SQL Server 2014。
  • 我的系統是 Ryzen 5800x (8c/16t),32GB RAM,只有 M.2 驅動器,峰值寫入速度為 4GB/s。
  • 另一個系統是 Intel i5 4460 (4c/4t),8GB RAM,使用峰值 500MB/s 寫入速度的 SSD。

正如您所看到的,根據規格,Intel 平台比 AMD 平台慢是相當合理的,但是得多?

在優化此類操作的速度時,我最應該關心的硬體規格是什麼?

我嘗試在網上找到一個可行的資源來解決它,但沒有成功,所以我問你們人們的想法。

這是我目前在兩個系統上使用的查詢:

BACKUP DATABASE [DBname]  
   TO  DISK = N'C:\tmp\DBname.bak' 
   WITH 
       NOFORMAT, 
       NOINIT, 
       NAME = N'DBname-Full Database Backup', 
       SKIP, 
       NOREWIND, 
       NOUNLOAD, 
       STATS = 10;

我的假設是記憶是限制因素。

在您的 32 GB 系統上,整個數據庫和備份文件同時適合記憶體,以及正常的 SQL Server 緩衝區分配,因此讀取和寫入操作可以是順序的。

在您的 8GB 系統上,SQL Server 必須以塊的形式讀取和寫入(備份文件不是數據庫文件的簡單副本),始終為其他任務留出一些可用緩衝區。

要對此進行測試,請在 32 GB 系統上,將 SQL Server 的最大記憶體設置為 8192 MB,重新配置並重試備份。

sp_configure 'show advanced options', 1;
go
reconfigure;
go
sp_configure 'max server memory', 8192;
go
reconfigure;

引用自:https://dba.stackexchange.com/questions/302757