收集基準:Azure VM 上 SQL Server 的效能最佳做法
本文提供資訊來收集效能基準,而此效能基準作為將 Azure 虛擬機器 (VM) 上 SQL Server 效能最佳化的一系列最佳做法和指導方針。
您通常必須在最佳化成本與最佳化效能之間做出取捨。 此效能最佳做法系列著重於取得 Azure 虛擬機器上 SQL Server 的「最佳」效能。 如果工作負載需求不高,則不一定要遵循每個最佳化建議。 評估以下建議時,請考量您的效能需求、成本和工作負載模式。
概觀
針對規定方式,請使用 PerfMon/LogMan 收集效能計數器,並擷取 SQL Server 等候統計資料,以進一步了解來源環境的一般壓力和潛在瓶頸。
在應用程式效能檢查清單之後的尖峰時間,開始收集來源工作負載的 CPU、記憶體、IOPS、輸送量和延遲。
收集尖峰期間的資料 (例如您一般工作日期間的工作負載),但也收集其他高負載程序 (例如,每日結束處理和週末 ETL 工作負載)。 請考慮擴大您的資源以處理非常頻繁的工作負載 (例如季末處理),然後在工作負載完成後縮小。
使用效能分析來選取可調整為工作負載效能需求的 VM 大小。
儲存體
SQL Server 效能絕大部分取決於 I/O 子系統,而儲存體效能是以 IOPS 和輸送量進行測量。 除非實體記憶體可以容納您的資料庫,否則 SQL Server 會不斷地將資料庫頁面帶入和帶出緩衝集區。 SQL Server 的資料檔案應該以不同的方式處理。 記錄檔是循序進行存取,但在隨機存取資料檔案 (包括 tempdb
) 而需要回復異動時除外。 如果您的 I/O 子系統很慢,則您的使用者可能會遇到效能問題,例如,緩慢的回應時間以及因逾時而未完成的工作。
Azure Marketplace 虛擬機器在實體磁碟上的記錄檔預設會與資料檔案不同。 tempdb
資料檔案計數和大小符合最佳做法,並以暫時性 D:\
磁碟機為目標。
下列 PerfMon 計數器可協助驗證 SQL Server 所需的 IO 輸送量:
- \LogicalDisk\Disk Reads/Sec (讀取 IOPS)
- \LogicalDisk\Disk Writes/Sec (寫入 IOPS)
- \LogicalDisk\Disk Read Bytes/Sec (資料、記錄和
tempdb
檔案的讀取輸送量需求) - \LogicalDisk\Disk Write Bytes/Sec (資料、記錄和
tempdb
檔案的寫入輸送量需求)
使用尖峰層級的 IOPS 和輸送量需求,評估符合您測量容量的 VM 大小。
如果工作負載需要 20K 讀取 IOPS 和 10K 寫入 IOPS,則您可以選擇 E16s_v3 (最多 32K 已快取和 25600 未快取的 IOPS),或 M16_s (最多 20K 已快取和 10K 未快取的 IOPS) 與 2 個使用儲存空間等量分割的 P30 磁碟。
請務必了解工作負載的輸送量和 IOPS 需求,因為 VM 針對 IOPS 和輸送量有不同的調整限制。
記憶體
追蹤作業系統所使用的外部記憶體,以及 SQL Server 內部使用的記憶體。 識別任一元件的壓力將有助於調整虛擬機器的大小,以及識別出調整的機會。
下列 PerfMon 計數器可以協助驗證 SQL Server 虛擬機器的記憶體健康情況:
- \記憶體\可用的 MB
- \SQLServer:Memory Manager\Target Server Memory (KB)
- \SQLServer:Memory Manager\Total Server Memory (KB)
- \SQLServer:Buffer Manager\Lazy writes/sec
- \SQLServer:Buffer Manager\Page life expectancy
計算
Azure 中計算的管理方式與內部部署不同。 因為管理額外負荷和新硬體取得成本,所以內部部署伺服器的建置已持續數年且未進行升級。 虛擬化可減少其中一些問題,但應用程式會經過最佳化以充分利用基礎硬體,這表示任何資源耗用量重大變更都需要重新平衡整個實體環境。
這在 Azure 中並非挑戰,因為不同硬體系列 (甚至是在不同區域) 上的新虛擬機器就很容易達成。
在 Azure 中,您想要盡可能充分利用虛擬機器資源,因此,您應該將 Azure 虛擬機器設定為盡可能將平均 CPU 維持在最高,而不影響工作負載。
下列 PerfMon 計數器可以協助驗證 SQL Server 虛擬機器的計算健康情況:
- \Processor Information(_Total)% Processor Time
- \Process(sqlservr)% Processor Time
注意
在理想的情況下,請嘗試使用 80% 的計算,而其尖峰高於 90%,但在任何持續期間內都未達到 100%。 基本上,您只想要佈建應用程式所需的計算,然後規劃在企業需要時擴大或縮小。
後續步驟
若要深入了解,請參閱此最佳作法系列的其他文章:
如需安全性最佳做法,請參閱 Azure 虛擬機器上的 SQL Server 安全性考量。
請檢閱 Azure 虛擬機器上的 SQL Server 概觀中其他「SQL Server 虛擬機器」的相關文章。 如果您有 SQL Server 虛擬機器的相關問題,請參閱常見問題集。