Sql-Server
不同硬體上的 SQL 完整數據庫備份性能
我編寫了一個相當簡單的腳本,它定期創建數據庫備份,如果已經存在完整備份,則會自動切換到差異備份。
這在我的系統上執行良好。一個 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;
去