共用方式為


儲存體:Azure VM 上的 SQL Server 效能最佳做法

適用於:Azure VM 上的 SQL Server

本文提供儲存體最佳做法與指導方針,以將 Azure 虛擬機器 (VM) 上 SQL Server 的效能最佳化。

通常必須在最佳化成本與最佳化效能之間做出取捨。 此效能最佳做法系列著重於取得 Azure VM 上 SQL Server 的「最佳」效能。 如果工作負載需求不高,則不一定要遵循每個最佳化建議。 評估以下建議時,請考量您的效能需求、成本和工作負載模式。

若要深入了解,請參閱此系列的其他文章:檢查清單VM 大小安全性HADR 設定收集基準

檢查清單

請檢閱下列檢查清單,先簡單了解儲存體最佳做法的概要,本文其餘部分將提供更詳細的說明:

  • 在選擇磁碟類型之前,請先監視應用程式,並判斷 SQL Server 資料、記錄及 tempdb 檔案的儲存體頻寬和延遲需求
  • 如果可用,請在 D: 本機 SSD 磁碟區上設定 tempdb 資料和記錄檔。 SQL IaaS 代理程式延伸模組會處理重新佈建時所需的資料夾和權限。
  • 若要將儲存體效能最佳化,請規劃最高未快取可用的 IOPS,並使用資料快取做為資料讀取的效能特徵,同時避免虛擬機器和磁碟上限
  • 使用 Ebdsv5 或 Ebsv5 系列 SQL Server VM 時,使用 進階 SSD v2 以取得最佳價格效能。 您可以使用 Azure 入口網站透過進階 SSD v2 部署 SQL Server VM (目前為預覽狀態)。
  • 將資料、記錄與 tempdb 檔案放在不同的磁碟機上。
    • 針對資料磁碟機,使用進階 P30 和 P40 或較小型磁碟來確保快取支援的可用性。 在使用 Ebdsv5 VM 系列時,使用進階 SSD v2,它為需要高 IOPS 和 I/O 輸送量的工作負載提供更好的價格效能。
    • 評估進階 SSD v2 或進階 SSD P30 – P80 磁碟時,針對容量和測試效能與成本相對的記錄磁碟機方案
    • 在選擇最佳的 VM 大小之後,對於不屬於容錯移轉叢集執行個體 (FCI) 的大部分 SQL Server 工作負載,將 tempdb 放在暫存磁碟 (暫存磁碟是暫時性的,預設為 D:\)。
      • 如果對 tempdb 來說,本機磁碟機的容量不足,請考慮調整 VM 的大小。 如需詳細資訊,請參閱<資料檔案快取原則>(機器翻譯)。
    • 對於容錯移轉叢集執行個體 (FCI),請將 tempdb 放在共用儲存體上。
      • 如果 FCI 工作負載嚴重相依於 tempdb 磁碟效能,則以進階設定的方式將 tempdb 放在本機暫時 SSD (預設 D:\) 磁碟機,此磁碟機並非 FCI 儲存體的一部分。 這項設定需要自訂監視和動作,由於此磁碟機的任何失敗都不會從 FCI 觸發動作,所以需要確保本機暫時 SSD (預設 D:\) 磁碟機處於隨時可用狀態。
  • 使用儲存空間來分割多個 Azure 資料磁碟,以將 I/O 頻寬增加高達目標虛擬機器的 IOPS 和輸送量限制。
  • 將資料檔案磁碟的主機快取設定為 [唯讀]
  • 將記錄檔磁碟的主機快取設定為 [無]
    • 請勿在包含 SQL Server 資料或記錄檔的磁碟上啟用讀取/寫入快取。
    • 在變更磁碟的快取設定之前,請一律停止 SQL Server 服務。
  • 將數個不同的工作負載移轉至雲端時,Azure 彈性 SAN 可以成為符合成本效益的合併儲存體解決方案。 不過,使用 Azure 彈性 SAN 時,達到 SQL Server 工作負載所需的 IOPS/輸送量通常需要超額佈建容量。 雖然通常不適合單一 SQL Server 工作負載,但將低效能工作負載與 SQL Server 結合時,您可以取得符合成本效益的解決方案。
  • 請考慮使用標準儲存體處理開發和測試工作負載,以及長期備份封存。 不建議使用標準 HDD/SSD 進行生產工作負載。
  • 只應針對較小型的開發/測試工作負載和部門系統考慮使用點數型磁碟高載 (P1-P20)。
  • 若要將儲存體效能最佳化,請規劃可用的最高未快取的 IOPS,並使用資料快取做為資料讀取的效能功能,同時避免虛擬機器和磁碟上限/節流
  • 將您的資料磁碟格式化,以針對位於暫存 D:\ 磁碟機以外之磁碟機上的所有資料檔案使用 64 KB 的配置單位大小 (預設值為 4 KB)。 透過 Azure Marketplace 部署的 SQL Server VM 隨附的資料磁碟會以配置單位大小進行格式化,並將儲存體集區的交錯設定為 64 KB。
  • 在與 SQL Server VM 相同的區域中設定儲存體帳戶。
  • 停用 Azure 異地備援儲存體 (異地複寫) 並在儲存體帳戶上使用 LRS (本地備援儲存體)。
  • 啟用 SQL 最佳做法評估,以識別可能的效能問題,並評估您的 SQL Server VM 是否已設定為遵循最佳做法。
  • 使用儲存體 IO 使用率計量來檢閱和監視磁碟和 VM 限制。
  • 從防毒軟體掃描中排除 SQL Server 檔案,包括資料檔案、記錄檔和備份檔案。

若要將儲存體檢查清單與其他最佳做法相互比較,請參閱完整的效能最佳做法檢查清單

概觀

若要針對 Azure VM 上的 SQL Server 工作負載尋找最具效率的設定,請先測量您商務應用程式的儲存體效能。 了解儲存體需求之後,請選取支援必要 IOPS 和輸送量的虛擬機器,該虛擬機器應具備適當的記憶體與虛擬核心比例。

為您的工作負載需求選擇具有足夠儲存體可擴縮性的 VM 尺寸,以及符合您企業容量和效能需求的混合磁碟 (其通常位於存放集區中)。

磁碟的類型取決於磁碟上託管的檔案類型,以及您的最佳性能需求。

提示

透過 Azure 入口網站佈建 SQL Server VM 有助於引導您完成儲存體設定流程,並執行大部分的儲存體最佳做法,其中包括針對您的資料和記錄檔建立個別的存放集區、將 tempdb 鎖定為 D:\ 磁碟機、以及啟用最佳的快取原則。 如需佈建和設定儲存體的詳細資訊,請參閱 SQL VM 儲存體設定

VM 磁碟類型

您可以自行選擇您的磁碟效能等級。 可用於基礎儲存體的受控磁碟類型 (按照順序列出,效能能力越高排越後面) 為:標準硬碟 (HDD)、標準固態硬碟 (SSD)、進階 SSD、進階 SSD v2 及 Ultra 磁碟。

若是標準 HDD、標準 SSD 和進階 SSD,磁碟的效能會隨著磁碟大小而增加,並以進階磁碟標籤進行分組 (例如,具有 4 GiB 空間的 P1、120 IOPS 以及 P80 與 32 TiB 的儲存體和 20,000 IOPS)。 進階儲存體會支援儲存體快取,其可協助改善某些工作負載的讀取和寫入效能。 如需詳細資訊,請參閱受控磁碟概觀

進階 SSD v2 和 Ultra 磁碟的效能可以獨立於磁碟大小而變更,如需詳細資料,請參閱<Ultra 磁碟效能>(機器翻譯) 和<進階 SSD v2 效能>(機器翻譯)。

對於您在 Azure VM 上的 SQL Server,您也需要考慮三大磁碟角色:作業系統磁碟、暫存磁碟以及資料磁碟。 請仔細選取儲存在作業系統磁碟機 (C:\) 和暫時性暫存磁碟機 (D:\) 上的內容。

作業系統磁碟

作業系統磁碟是指可開機,並掛接為執行中作業系統版本的虛擬硬碟 (VHD),且其標示為 C:\ 磁碟機。 建立 Azure VM 時,該平台會附加至少一個磁碟至 VM 作為作業系統磁碟。 C:\ 磁碟機為安裝應用程式和設定檔案時使用的預設位置。

對於生產 SQL Server 環境,請不要將作業系統磁碟用於資料檔案、記錄檔或錯誤記錄檔。

暫存磁碟

許多 Azure VM 會包含另一個稱為暫存磁碟的磁碟類型 (標示為 D:\ 磁碟機)。 視 VM 系列和大小而定,此磁碟的容量將會隨其改變。 暫存磁碟是暫時性的,這表示會重新建立磁碟儲存體 (如同該儲存體遭到解除配置,然後再次重新配置一遍),重新開機 VM,或移至不同的主機 (例如,為了進行服務修復)。

暫存儲存體磁碟機不會持續儲存檔案至遠端存放裝置,因此不應利用其儲存使用者資料庫檔案、交易記錄檔或任何必須予以保存的資料。 例如,您可以將其用於緩衝集區延伸、頁面檔案和 tempdb

除非您不想消耗本機快取,否則請將 tempdb 放在 SQL Server 工作負載的本機暫存 SSD D:\ 磁碟機上。 如果您要使用沒有暫存磁碟的 VM,則建議您將 tempdb 放在其個別的磁碟或儲存集區,並將快取設定為 [唯讀]。 若要深入瞭解,請參閱 tempdb 資料快取原則

資料磁碟

資料磁碟為遠端儲存體磁碟,通常會在儲存集區中建立,此做法使其能超越任何單一磁碟可提供給 VM 的容量和效能。

以滿足工作負載的 IOPS、輸送量及容量需求為目的,連結最少的磁片數量。 請不要超過您預計中要調整大小的最小 VM 資料磁碟數量上限。

將資料和記錄檔放在已佈建為最符合效能需求的資料磁碟上。

將您的資料磁碟格式化,以針對位於暫存 D:\ 磁碟機以外之磁碟機上的所有資料檔案使用 64 KB 的配置單位大小 (預設值為 4 KB)。 透過 Azure Marketplace 部署 SQL Server VM 隨附的資料磁碟會以配置單位大小進行格式化,並將存放集區的交錯設定為 64 KB。

注意

您也可以直接在 Azure Blob 儲存體SMB 儲存體 (例如 Azure 進階檔案共用) 上託管 SQL Server 資料庫檔案,但我們建議使用 Azure 受控磁碟,其可提供最佳效能、可靠性及功能可用性。

進階 SSD v2

如果目前限制適合您的環境,則在支援的區域中執行 SQL Server 工作負載時,您應使用進階 SSD v2 磁碟。 根據您的組態,進階 SSD v2 可能比進階 SSD 更便宜,同時也提供效能改進。 使用進階 SSD v2,您可以獨立於磁碟大小單獨調整輸送量或 IOPS。 能夠單獨調整效能選項可以節省更大的成本,且可讓您編寫變更指令碼以滿足預期或已知需求期間的效能要求。

我們建議在使用 Ebdsv5 或 Ebsv5 虛擬機器系列時使用進階 SSD v2,因為對於這些高 I/O 輸送量機器來說,它是一種更符合成本效益的解決方案。

您可以使用 Azure 入口網站透過進階 SSD v2 部署 SQL Server VM (目前為預覽狀態)。

若您使用 Azure 入口網站 來部署 SQL Server VM,而且想要使用進階 SSD v2,則目前僅限於使用 Ebdsv5 或 Ebsv5 系列虛擬機器。 不過,如果您使用進階 SSD v2 儲存體手動建立 VM,然後將 SQL Server 手動安裝在 VM 上,則可以使用支援進階 SSD v2 的任何 VM 系列。 請務必使用 SQL IaaS 代理程式擴充功能註冊 SQL Server VM,以便利用擴充功能所提供的所有優點

Azure 彈性 SAN

Azure 彈性 SAN 是一種網路連接儲存裝置供應項目,可為客戶提供彈性且可調整的解決方案,並有可能透過儲存體合併來降低成本。 Azure 彈性 SAN 提供了符合成本效益、效能且可靠的區塊存放裝置解決方案,可透過 iSCSI 通訊協定連線至各種 Azure 計算服務。 彈性 SAN 可讓您順暢地從現有的 SAN 儲存體資產轉換至雲端,而不需要重構客戶應用程式架構。

此解決方案可擴充至數百萬個 IOPS、兩位數 GB/秒的輸送量和低於十毫秒的低延遲,並具有內建復原,可最大限度地減少停機時間。 如果需要合併儲存體、使用多個計算服務或在透過網路頻寬驅動儲存體時具有需要高輸送量層級的工作負載,請使用 Azure 彈性 SAN。 不過,由於達到 SQL Server 工作負載所需的 IOPS/輸送量通常需要超額佈建容量,因此通常不適合單一 SQL Server 工作負載。 為了取得最具成本效益的解決方案,可能需要將其他低效能工作負載與 SQL Server 結合。

考慮 Azure 彈性 SAN 的 VM 大小和效能時,請務必了解透過網路進行儲存體通訊。 例如,VM 大小 E4d_v5 不支援 Azure 進階儲存體,但適用於 Azure 彈性 SAN,因為它最多可支援 12,500 Mbps 網路輸送量。 將 Azure 彈性 SAN 與此 VM 大小搭配使用時,您必須確保工作負載的網路和儲存體輸送量需求低於 12,500 Mbps 網路輸送量限制。

在使用 Azure 彈性 SAN 部署 SQL Server VM 之前確定網路和儲存體需求,然後仔細監視網路和儲存體使用量以確認所選 VM 可以容納工作負載。 若要深入了解,請檢閱具有彈性 SAN 磁碟區的 VM 效能彈性 SAN 計量

警告

  • 使用彈性 SAN 調整 VM 大小必須滿足生產 (VM 至 VM) 網路輸送量需求以及儲存體輸送量。 使用彈性 SAN 時,針對 IO 輸送量最佳化的 VM 大小可能不像針對網路頻寬最佳化的 VM 大小一樣符合成本效益。

請考慮將 SQL Server 工作負載放在彈性 SAN 上,以取得更好的成本效益,因為:

  • 儲存體合併和動態效能共用:通常,對於 Azure VM 工作負載上的 SQL Server,磁碟儲存體是根據您的容量和該 VM 的尖峰效能需求按每個 VM 進行佈建的。 此超額佈建的效能在需要時可用,但未使用的效能無法與其他 VM 上的工作負載共用。 彈性 SAN 與內部部署 SAN 類似,允許合併多個 SQL 和非 SQL 工作負載的儲存體需求,以實現更好的成本效益,並且能夠根據 IO 需求在為這些不同工作負載佈建的磁碟區之間動態共用佈建的效能。 例如,在美國東部區域,如果您有 10 個工作負載,每個工作負載需要 2 TiB 容量和 1 萬個 IOPS,但在任何時間點它們總共不需要超過 6 萬個 IOPS。 您可以設定具有 12 個基礎單位 (1 個基礎單位 = 每月每 GiB 0.08 美元) 的彈性 SAN,這將為您提供 12 TiB 容量和所需的 6 萬個 IOPS,以及 8 個純容量單位 (1 個純容量單位 = 每月每 GiB 0.06 美元),這將以更低的成本為您提供剩餘的 8 TiB 容量。 此最佳儲存體組態可提供更好的成本效益,同時為每個工作負載提供必要的效能 (1 萬個 IOPS)。 如需有關彈性 SAN 基礎和純容量佈建單位的詳細資訊,請造訪規劃 Azure 彈性 SAN;如需了解價格,請造訪 Azure 彈性 SAN – 價格
  • 提高儲存體輸送量:由於 VM 的磁碟輸送量限制,Azure VM 上的 SQL Server 部署有時需要超額佈建 VM。 您可以使用彈性 SAN 避免這種情況,因為您可以使用 iSCSI 通訊協定透過計算網路頻寬提高儲存體輸送量。 例如,Standard_E32ds_v5 VM 上限為 51,200 個 IOPS 和 865 MBps 的磁碟/儲存體輸送量,但最多可以達到 2,000 MBps 網路輸送量。 如果工作負載的儲存體輸送量需求大於 865 MBps,您無需將 VM 升級到更高的 SKU,因為它現在可以透過使用彈性 SAN 支援高達 2,000 MBps。

進階 SSD

針對生產 SQL Server 工作負載,請使用進階 SSD 搭配資料和記錄檔。 進階 SSD IOPS 和頻寬會根據磁碟大小和類型而有所不同。

針對生產工作負載,請使用 P30 和/或 P40 磁碟搭配 SQL Server 資料檔案,以確保快取支援,並使用 P30 或高達 P80 的 SQL Server 交易記錄檔。 為了享有最符合經濟效應的擁有權總成本,起始請先為資料和記錄檔設定 P30 (5000 IOPS/200 MBPS),而且只有在需要控制 VM 磁碟計數時,才選擇較高的容量。 對於開發/測試或小型系統,您可以選擇使用小於 P30 的大小,因為它們支援快取,但它們不提供保留的定價。

針對 OLTP 工作負載,請使用尖峰時間的工作負載和 Disk Reads/sec + Disk Writes/sec 效能計數器,對於每個磁碟的目標 IOPS (或存放集區) 與效能需求進行比對。 針對資料倉儲和報告工作負載,請使用尖峰時間的工作負載來比對目標輸送量與 Disk Read Bytes/sec + Disk Write Bytes/sec

使用儲存空間來達到最佳效能、設定兩個集區,其一用於記錄檔,而另一個用於資料檔案。 如果您未使用磁碟等量分割,則請使用兩個對應至個別磁碟機的進階 SSD 磁碟;其中一個磁碟機包含記錄檔,另一個則包含資料。

每個磁碟作為存放集區一部分使用所佈建的 IOPS 和輸送量。 磁碟的合併 IOPS 和輸送量功能是最大的功能,最高可達 VM 的輸送量限制。

最佳做法是盡可能使用最少的磁碟數量,同時符合 IOPS (和輸送量) 及容量的最低需求。 不過,價格和效能之間更佳的平衡通常來自於大量的小型磁碟,而不是少數的大型磁碟。

級別進階磁碟

進階 SSD 的大小決定磁碟的初始效能層級。 在部署時指定效能層級,或在部署後再進行變更,且不變更磁碟的大小。 如果需求增加,您可以提高效能層級,以滿足您的商務需求。

變更效能層級可讓管理員為您做好準備,並滿足更高的需求,而不需依賴磁碟高載

在計費的設計目的是為了符合儲存體效能層級的情況下,您就可以在需要時使用較高的效能。 在不會增加容量的情況下,升級層級以滿足效能需求。 當不再需要額外的效能時,退回原始服務層級。

此類符合成本效益且暫時性的效能升級為適用於目標事件的強式使用案例,例如購物、效能測試、訓練事件及其他短暫的時間點 (只在短期內需要更佳的效能)。

如需詳細資訊,請參閱受控磁碟的效能層級

Azure Ultra 磁碟

如果需要降低延遲的快速回應時間,請考慮針對 SQL Server 記錄磁碟機使用 Azure Ultra 磁碟,或甚至考慮對 I/O 延遲非常敏感,與應用程式搭配的資料驅動器。

可以設定 Ultra 磁碟為容量和 IOPS 以獨立方式進行縮放。 使用 Ultra 磁碟,管理員可以根據應用程式需求,佈建具有容量、IOPS 及輸送量需求的磁碟。

並非所有 VM 系列都支援 Ultra 磁碟,而且有其他限制,例如區域可用性、備援以及 Azure 備份的支援。 若要深入瞭解,請參閱使用 Azure ultra 磁碟,取得關於限制的完整清單。

標準 HDD 和 SSD

標準 HDD 具有與 SSD 不同的延遲和頻寬,因此僅建議用於開發/測試工作負載。 生產工作負載應該使用進階 SSD v2 或進階 SSD。 如果您使用標準 SSD (開發/測試案例),建議您新增 VM 大小所支援的最大資料磁碟數量,並使用磁碟等量與儲存空間以發揮最佳效能。

快取功能

支援進階儲存體快取的 VM 可以利用稱為 Azure BlobCache 或主機快取的額外功能,擴充 VM 的 IOPS 及輸送量功能。 針對進階儲存體和進階儲存體快取啟用的 VM 具有這兩種不同的儲存體頻寬限制,可一起搭配使用以改善儲存體效能。

沒有快取的 IOPS 和每秒百萬位元數 (MBps) 輸送量會算進 VM 未快取的磁碟輸送量限制。 最大快取限制會為讀取提供額外的緩衝區,此步驟會幫助解決成長及非預期的尖峰等問題。

在選項受到支援時,一律啟用進階快取,以在不需要額外費用的前提下,大幅改善對資料磁碟機的讀取效能。

讀取和寫入 Azure BlobCache (快取的 IOPS 和輸送量) 不會算進 VM 的未快取 IOPS 及輸送量限制。

注意

對於 4 TiB 和更大的磁碟,(P50 或更大) 將不支援磁碟快取。 如果將多個磁碟附加至您的 VM,小於 4 TiB 的每個磁碟會支援快取。 如需詳細資訊,請參閱磁碟快取

未快取的輸送量

最大未快取的磁碟 IOPS 和輸送量是 VM 可以處理的最大遠端存放庫限制。 這項限制是在 VM 上定義,且並非對於基礎磁碟儲存體的限制。 此限制僅適用于從遠端連線至 VM 的資料磁片磁碟機的 i/o,而非針對暫存磁片磁碟機的本機 i/o (D:\ 磁片磁碟機) 或 OS 磁片磁碟機。

您可以在 VM 的文件中,驗證可供 VM 使用的未快取 IOPS 和輸送量數量。

例如,M 系列 文件會顯示 Standard_M8ms VM 的最大未快取輸送量為 5000 IOPS,未快取磁碟輸送量為 125 MBps。

此螢幕擷取畫面顯示 M 系列未快取磁碟輸送量文件。

同樣地,您可以看到 Standard_M32ts 支援 20,000 個未快取磁碟 IOPS 和 500-MBps 未快取的磁碟輸送量。 此限制一律受限於 VM 層級,與基礎進階磁碟儲存體無關。

如需詳細資訊,請參閱未快取和快取限制

快取和暫存儲存體輸送量

最大快取和暫存儲存體輸送量限制為獨立的限制,與 VM 上未快取的輸送量限制無關。 Azure BlobCache 由 VM 主機的隨機存取記憶與本機連結 SSD 的組合所組成。 VM 中的暫存磁碟機 (D:\ 磁碟機) 也託管於此本機的 SSD。

只有在啟用主機快取時,最大快取和暫存儲存體輸送量限制會對本機暫存磁片磁碟機 (D:\ 磁碟機) 和 Azure BlobCache 進行控制。

當在進階儲存體啟用快取時,VM 可以縮放至超過遠端存放裝置未快取的 VM IOPS 和輸送量限制的極限。

只有特定的 VM 能支援進階儲存體與進階儲存體快取 (必須在虛擬機器文件中進行驗證)。 例如,M 系列 文件顯示同時支援進階儲存體與進階儲存體快取:

此螢幕擷取畫面顯示 M 系列進階儲存體支援。

快取的限制會隨著 VM 大小而不同。 例如,Standard_M8ms VM 支援 10000 快取的磁碟 IOPS 和 1000-MBps 快取的磁碟輸送量,總共快取大小為 793 GiB。 相等地,Standard_M32ts VM 支援 4 萬個快取的磁碟 IOPS 和 400 MBps 快取的磁碟輸送量,總共快取大小為 3,174 GiB。

此螢幕擷取畫面顯示 M 系列快取磁碟輸送量文件。

您可以在現有的 VM 上手動啟用主機快取。 在對 VM 的快取原則進行任何變更之前,請先停用所有應用程式工作負載和 SQL Server 服務。 變更任何 VM 快取設定會導致在套用設定之後,目標磁碟會遭到卸離並中斷連結,然後再重新連結。

資料檔案快取原則

您的儲存體快取原則會根據磁碟機上所託管的 SQL Server 資料檔案類型而有所不同。

下表提供建議快取原則的摘要,其基於 SQL Server 資料類型:

SQL Server 磁碟 建議
資料磁碟 針對裝載 SQL Server 資料檔案的磁碟啟用 Read-only 快取。
從快取讀取的速度會比從資料磁碟未快取的讀取更快。
未快取的 IOPS 和輸送量加上快取的 IOPS 和輸送量,會產生 VM 限制內 VM 可用的總可用效能,但實際的效能會因工作負載使用快取 (快取命中率) 的能力而不同。
交易記錄磁碟 針對裝載交易記錄檔的磁碟,請將快取原則設定為 None。 針對交易記錄檔磁碟啟用快取並不會提供任何效能優勢,實際上,在記錄磁碟機上啟用 Read-onlyRead/Write 快取可能會降低寫入磁碟機的效能,並減少資料磁碟機可讀取的快取數量。
操作作業系統 (OS) 磁碟 預設的快取原則為 Read/write,適用於作業系統 (OS) 磁碟機。
不建議您變更作業系統磁碟機的快取層級。
tempdb 如果因容量原因而無法將 tempdb 放在暫時磁碟機 D:\ 上,則請調整 VM 的大小以取得較大的暫時磁碟機,或將 tempdb 放在已設定 Read-only 快取的個別資料磁碟機上。
VM 快取和暫時磁碟機都使用本機 SSD,所以請記住,當您在暫時磁碟機上進行託管時,如果將 tempdb I/O 調整大小,則會將其算入快取的 IOPS 和輸送量 VM 限制。

重要

變更 Azure 磁碟的快取設定會將目標磁碟中斷連結再重新連結。 當您變更託管 SQL Server 資料、記錄檔或應用程式檔案之磁碟其中的快取設定時,請務必停用 SQL Server 服務以及任何其他相關的服務,以避免資料損毀。

若要深入瞭解,請參閱磁碟快取

磁碟等量分割

若要判斷資料磁碟的數量 (包括記錄檔和 tempdb),請分析 SQL Server 資料檔案所需的輸送量和頻寬。 輸送量和頻寬限制會依 VM 大小而有所不同。 如需詳細資訊,請參閱 VM 大小

如需更多的輸送量,請新增更多資料磁碟,並使用磁碟等量分割。 例如,需要 12,000 IOPS 和 180-MB/秒 輸送量的應用程式可以使用三份等量 P30 磁碟來提供 15,000 IOPS 以及 600-MB/秒 輸送量。

若要設定磁碟等量分割,請參閱磁碟等量分割

磁碟上限

磁碟層級與 VM 層級都有輸送量限制。 每個 VM 和每個磁碟的最大 IOPS 限制都不盡相同,且各自獨立。

如果應用程式耗用的資源超出這些限制,其將會受到節流處理 (也稱為上限)。 選取磁碟等量中能夠滿足應用程式需求且不會面臨上限限制的 VM 以及磁碟大小。 若要解決上限問題,請使用快取,或調整應用程式以減少需要的輸送量。

例如,有 12,000 IOPS 和 180 MB/秒 需求的應用程式可以採用下列方法:

  • 使用 Standard_M32ms,其最大未快取的磁碟輸送量為 20,000 IOPS 和 500 MBps。
  • 將三份 P30 磁碟進行分割以提供 15,000 IOPS 和 600 MB/秒的輸送量。
  • 使用 Standard_M16ms 的 VM,並使用主機快取來利用本機快取,而不需耗用輸送量。

設定為在高使用率期間相應擴大的 VM 應佈建具有足夠 IOPS 和輸送量的儲存體,以支援最大的 VM 大小,同時讓磁碟的整體數量維持小於或等於要使用的最小 VM SKU 所支援的最大數目。

如需磁碟上限限制,以及如何使用快取來避免上限的相關詳細資訊,請參閱磁碟 IO 上限

注意

某些磁碟上限或許仍可提供令使用者滿意的效能;調整及維護工作負載,而不是調整大小為較大的 VM,可以在商務成本與效能之間達到平衡。

寫入加速

寫入加速為磁碟功能,僅適用於 M 系列 VM。 寫入加速的目的是為了改善針對 Azure 進階儲存體的寫入 I/O 延遲,同時由於大量任務關鍵性 OLTP 工作負載或資料倉儲環境,而需要單一位數 I/O 延遲。

使用寫入加速來改善寫入延遲,針對裝載記錄檔的磁碟機。 請不要對於 SQL Server 資料檔案使用寫入加速。

寫入加速器磁碟會與 VM 共用相同的 IOPS 限制。 連結的磁碟不能超過 VM 的寫入加速器 IOPS 限制。

下表列出每個 VM 所支援的資料磁碟和 IOPS 數量:

VM SKU # 寫入加速器磁碟 每個 VM 的寫入加速器磁碟 IOPS
M416ms_v2、M416s_v2 16 20000
M128ms、M128s 16 20000
M208ms_v2、M208s_v2 8 10000
M64ms,M64ls,M64s 8 10000
M32ms,M32ls,M32ts,M32s 4 5000
M16ms,M16s 2 2500
M8ms,M8s 1 1250

使用寫入加速時有數個限制。 若要深入瞭解,請參閱使用寫入加速器時的限制

與 Azure Ultra 磁碟進行比較

寫入加速與 Azure ultra 磁碟之間的最大差異在於,「寫入加速」為 VM 功能,僅適用於 M 系列;而 Azure ultra 磁碟則是儲存體選項。 寫入加速為寫入最佳化的快取,其本身的限制取決於 VM 大小。 Azure ultra 磁碟為適用於 Azure VM 的低延遲磁碟儲存體選項。

如有可能,請對於交易記錄磁碟使用寫入加速,而不是 ultra 磁碟。 對於不支援寫入加速但需要低延遲至交易記錄的 VM,請使用 Azure Ultra 磁碟。

監視儲存體效能

若要評估儲存體需求,並判斷儲存體的執行狀況如何,您必須了解測量基準,以及這些指標的含意。

IOPS (每秒輸入/輸出)是應用程式每秒對儲存體進行的要求數量。 使用效能監視器計數器 Disk Reads/secDisk Writes/sec 來測量 IOPS。 OLTP (線上交易處理)應用程式需要驅動更高的 IOPS,才能達到最佳效能。 付款處理系統、線上購物及零售銷售點系統等應用程式全都都是 OLTP (線上交易處理) 應用程式的範例。

輸送量為傳送到基礎儲存體的資料量,通常是以每秒 mb 數進行測量。 使用效能監視器的計數器 Disk Read Bytes/secDisk Write Bytes/sec 來測量輸送量。 資料倉儲 已進行最佳化,其透過 IOPS 來最大化輸送量。 用於分析的資料存放區、報告、ETL 工作流及其他商業智慧目標等應用程式都是資料倉儲應用程式的範例。

I/O 單位大小會影響 IOPS 和輸送量功能,由於較小的 I/O 大小會產生較高的 IOPS,而較大的 I/O 大小則會產生較高的輸送量。 SQL Server 會自動選擇最合適的 I/O 大小。 如需更多詳細資訊,請參閱針對您的應用程式最佳化 IOPS、輸送量及延遲

某些特定的 Azure 監視器計量非常適合用於探索 VM 和磁碟層級的上限,還有 AzureBlob 快取的耗用量以及健康情況。 若要識別需要新增至監視解決方案以及 Azure 入口網站儀表板的金鑰計數器,請參閱儲存體使用計量

注意

Azure 監視器目前未提供暫時暫存磁碟機 (D:\) 的磁碟層級計量。 VM 快取的 IOPS 耗用百分比連同 VM 快取的頻寬耗用百分比,將同時反映暫時暫存磁碟機 (D:\) 和主機快取的 IOPS 和輸送量。

監視交易記錄成長

由於寫滿交易記錄可能會導致效能問題和中斷,因此監視交易記錄中的可用空間以及保存交易記錄的磁碟機的已使用磁碟空間非常重要。 在交易記錄問題影響您的工作負載之前解決它們。

如果您的記錄已滿,請檢閱對寫滿交易記錄進行疑難排解

如果需要擴充磁碟,您可以在 SQL 虛擬機器資源[儲存體] 窗格上執行此作業 (如果從 Azure Marketplace 部署 SQL Server 映像),或在 Azure 虛擬機器和自我安裝的 SQL Server 的 [磁碟] 窗格上執行此作業。

下一步

若要深入了解,請參閱此最佳作法系列的其他文章: