在 Azure Stack Hub 中優化效能的 SQL Server 最佳做法
本文提供 SQL Server 最佳做法,以優化 SQL Server,並改善 azure Stack Hub 虛擬機 (VM) Microsoft效能。 在 Azure Stack Hub VM 中執行 SQL Server 時,請使用適用於內部部署伺服器環境中的 SQL Server 的相同資料庫效能微調選項。 Azure Stack Hub 雲端中關係資料庫的效能取決於許多因素,包括 VM 系列大小和數據磁碟的設定。
建立 SQL Server 映射時, 請考慮在 Azure Stack Hub 入口網站中布建 VM。 從 Azure Stack Hub 系統管理員入口網站中的 Marketplace 管理下載 SQL IaaS 擴充功能,然後下載您選擇的 SQL Server VM 映像。 其中包括 SQL Server 2016 SP1、SQL Server 2016 SP2 和 SQL Server 2017。
注意
雖然本文說明如何使用全域 Azure 入口網站 布建 SQL Server VM,但指導方針也適用於 Azure Stack Hub,但有下列差異:SSD 不適用於操作系統磁碟,記憶體組態稍有差異。
在 VM 映射中,針對 SQL Server,您只能使用自備授權 (BYOL)。 針對 Windows Server,預設授權模型是隨用隨付 (PAYG)。 如需 VM 中 Windows Server 授權模型的詳細資訊,請參閱 Azure Stack Hub Marketplace 中的 Windows Server 常見問題一文。
取得 Azure Stack Hub VM 上 SQL Server 的最佳效能是本文的重點。 如果工作負載需求不高,則不一定要遵循每個最佳化建議。 當您評估這些建議時,請考慮您的效能需求和工作負載模式。
注意
如需 Azure VM 中 SQL Server 的效能指引,請參閱 這篇文章。
SQL Server 最佳做法的檢查清單
下列檢查列表適用於 Azure Stack Hub VM 上 SQL Server 的最佳效能:
區域 | 最佳化 |
---|---|
VM 大小 | SQL Server Enterprise 版本的 DS3 或更高版本。 SQL Server Standard 版本和 Web 版本的 DS2 或更高版本。 |
儲存體 | 使用支援 進階記憶體的 VM 系列。 |
磁碟 | 使用至少兩個數據磁碟(一個用於記錄檔,一個用於數據檔和 TempDB),並根據容量需求選擇磁碟大小。 在 SQL Server 安裝期間,將預設資料檔位置設定為這些磁碟。 避免針對資料庫記憶體或記錄使用操作系統或暫存磁碟。 使用 儲存空間 等量分割多個 Azure 數據磁碟,以提升 IO 輸送量。 使用記載的配置大小格式化。 |
I/O | 針對資料檔案,啟用 [立即檔案初始化] 功能。 限制資料庫上的自動成長,其固定增量相當小(64 MB-256 MB)。 停用資料庫的 autoshrink。 在數據磁碟上設定預設備份和資料庫檔案位置,而不是操作系統磁碟。 啟用鎖定的頁面。 套用 SQL Server Service Pack 和累積更新。 |
功能專屬 | 直接備份至 Blob 記憶體(如果受使用中的 SQL Server 版本支援)。 |
如需如何及為何進行這些優化的詳細資訊,請檢閱下列各節中提供的詳細數據和指引。
VM 大小指引
對於效能敏感的應用程式,建議使用下列 VM 大小 :
SQL Server Enterprise 版本: DS3 或更高版本
SQL Server Standard 版本和 Web 版本: DS2 或更高版本
使用 Azure Stack Hub 時,DS 與 DS_v2 VM 系列之間沒有效能差異。
儲存體指引
Azure Stack Hub 中的 DS 系列 (以及 DSv2 系列) VM 提供最大作業系統磁碟和數據磁碟輸送量 (IOPS)。 DS 或 DSv2 系列中的 VM 針對作業系統磁碟提供最多 1,000 IOPS,以及每個數據磁碟最多 2,300 IOPS,無論所選磁碟的類型或大小為何。
數據磁碟輸送量是根據 VM 系列來唯一決定。 您可以 參考本文 來識別每個 VM 系列的數據磁碟輸送量。
注意
針對生產工作負載,請選取 DS 系列或 DSv2 系列 VM,以提供作業系統磁碟和數據磁碟上可能的最大 IOPS。
在 Azure Stack Hub 中建立記憶體帳戶時,異地複寫選項沒有作用,因為 Azure Stack Hub 中無法使用此功能。
磁碟指引
Azure Stack Hub VM 上有三個主要磁碟類型:
操作系統磁碟: 當您建立 Azure Stack Hub VM 時,平臺至少會將一個磁碟(標示為 C 磁碟驅動器)連結至您操作系統磁碟的 VM。 此磁碟是儲存為記憶體中分頁 Blob 的 VHD。
暫存磁碟: Azure Stack Hub VM 包含另一個稱為暫存磁碟的磁碟(標示為 D 磁碟驅動器)。 這是節點上可用於臨時空間的磁碟。
數據磁碟: 您可以將其他磁碟連結至 VM 作為數據磁碟,而這些磁碟會以分頁 Blob 的形式儲存在記憶體中。
下列各節說明使用這些不同磁碟的建議。
作業系統磁碟
操作系統磁碟是 VHD,您可以開機並掛接為作業系統的執行中版本,並標示為 C 磁碟驅動器。
暫存磁碟
標示為 D 磁碟驅動器的暫存磁碟驅動器不會持續存在。 請勿儲存您不願意在 D 磁碟驅動器上遺失的任何數據。 這包括您的使用者資料庫檔案和使用者事務歷史記錄檔。
我們建議將數據磁碟上儲存 TempDB,因為每個數據磁碟最多可為每個數據磁碟提供 2,300 IOPS。
資料磁碟
- 針對數據和記錄檔使用數據磁碟。 如果您未使用磁碟等量分割,請使用支援進階記憶體的 VM 中的兩個數據磁碟,其中一個磁碟包含記錄檔,另一個磁碟則包含數據和 TempDB 檔案。 每個數據磁碟會根據 VM 系列提供數個 IOPS,如 Azure Stack Hub 支援的 VM 大小中所述。 如果您使用磁碟等等量分割技術,例如 儲存空間,請將所有數據和記錄檔放在相同的磁碟驅動器上(包括 TempDB)。 此組態可讓您使用 SQL Server 的 IOPS 數目上限,無論哪個檔案在任何特定時間都需要它們。
注意
當您在入口網站中布建 SQL Server VM 時,您可以選擇編輯記憶體組態。 根據您的設定,Azure Stack Hub 會設定一或多個磁碟。 多個磁碟會合併成單一存放集區。 數據和記錄檔都位於此組態中。
磁碟等量: 如需更多輸送量,您可以新增其他數據磁碟並使用磁碟等量分割。 若要判斷您需要的數據磁碟數目,請分析記錄檔和數據和 TempDB 檔案所需的 IOPS 數目。 請注意,IOPS 限制是以 VM 系列系列為基礎的每個數據磁碟,而不是以 VM 大小為基礎。 不過,網路頻寬限制是以 VM 大小為基礎。 如需詳細資訊,請參閱 Azure Stack Hub 中的 VM 大小數據表。 請使用下列指導方針:
針對 Windows Server 2012 或更新版本,請使用 儲存空間 搭配下列指導方針:
將數據倉儲工作負載的交錯(等量大小)設定為 64 KB(65,536 位元組),以用於在線事務處理 (OLTP) 工作負載,以及 256 KB (262,144 個字節)的數據倉儲工作負載,以避免因為分割區不對齊而造成效能影響。 必須使用 PowerShell 來設定。
設定資料行數目 = 實體磁碟數量。 設定八個以上的磁碟時,請使用PowerShell(而非 伺服器管理員 UI)。
例如,下列 PowerShell 會建立新的存放集區,並將交錯大小設定為 64 KB,並將數據行數目設為 2:
$PoolCount = Get-PhysicalDisk -CanPool $True $PhysicalDisks = Get-PhysicalDisk | Where-Object {$_.FriendlyName -like "*2" -or $_.FriendlyName -like "*3"} New-StoragePool -FriendlyName "DataFiles" -StorageSubsystemFriendlyName "Storage Spaces*" -PhysicalDisks $PhysicalDisks | New-VirtualDisk -FriendlyName "DataFiles" -Interleave 65536 -NumberOfColumns 2 -ResiliencySettingName simple -UseMaximumSize |Initialize-Disk -PartitionStyle GPT -PassThru |New-Partition -AssignDriveLetter -UseMaximumSize |Format-Volume -FileSystem NTFS -NewFileSystemLabel "DataDisks" -AllocationUnitSize 65536 -Confirm:$false
請根據您預期的負載量,決定與您的儲存體集區相關聯的磁碟數量。 請注意,各 VM 大小所允許連接的資料磁碟數量皆不同。 如需詳細資訊,請參閱 Azure Stack Hub 中支援的 VM 大小。
若要取得數據磁碟的最大可能 IOPS,建議新增 VM 大小所支援的數據磁碟數目上限,以及使用磁碟等量分割。
NTFS 配置單位大小: 格式化數據磁碟時,建議您針對數據和記錄檔以及 TempDB 使用 64 KB 的配置單位大小。
磁碟管理做法: 移除數據磁碟時,請在變更期間停止 SQL Server 服務。 此外,請勿變更磁碟上的快取設定,因為它不會提供任何效能改善。
警告
在這些作業期間無法停止 SQL 服務,可能會導致資料庫損毀。
I/O 指引
請考慮啟用立即檔案初始化,以減少初始檔案配置所需的時間。 若要利用立即檔案初始化,您可以使用 SE_MANAGE_VOLUME_NAME授與 SQL Server (MSSQLSERVER) 服務帳戶,並將其新增至執行磁碟區維護工作安全策略。 如果您使用 Azure 的 SQL Server 平臺映像,則不會將預設服務帳戶 (NT Service\MSSQLSERVER) 新增至 執行磁碟區維護工作 安全策略。 換句話說,SQL Server Azure 平臺映像中不會啟用立即檔案初始化。 將 SQL Server 服務帳戶新增至 執行磁碟區維護 工作安全策略之後,請重新啟動 SQL Server 服務。 使用這項功能時可能會有安全性考慮。 如需詳細資訊,請參閱 資料庫檔案初始化。
自動成長 是非預期成長的應變措施。 請勿使用自動成長,以日常方式管理您的數據和記錄成長。 如果使用自動成長,請使用 Size 參數預先成長檔案。
請確定 已停用 autoshrink ,以避免造成負面影響的不必要的額外負荷。
設定預設備份和資料庫檔案位置。 使用本文中的建議,並在 [伺服器屬性] 視窗中進行變更。 如需指示,請參閱檢視或變更數據和記錄檔的預設位置(SQL Server Management Studio)。 下列螢幕快照顯示進行這些變更的位置:
啟用鎖定的頁面以減少 IO 和任何分頁活動。 如需詳細資訊,請參閱 啟用鎖定記憶體中的頁面選項 (Windows) 。
請考慮在移出 Azure Stack Hub 時壓縮任何數據檔,包括備份。
功能特定指引
某些部署可能會使用更進階的組態技術來達到額外的效能優勢。 下列清單醒目提示一些 SQL Server 功能,可協助您達到更好的效能:
備份至 Azure 記憶體。 針對在 Azure Stack Hub VM 中執行的 SQL Server 進行備份時,您可以使用 SQL Server 備份至 URL。 此功能從 SQL Server 2012 SP1 CU2 開始提供,並建議備份至鏈接的數據磁碟。
當您使用 Azure 記憶體進行備份或還原時,請遵循 SQL Server 備份至 URL 最佳做法和從儲存在 azure Microsoft 備份進行疑難解答和還原的建議。 您也可以使用 Azure VM 中的 SQL Server 自動備份,將這些備份自動化。
備份至 Azure Stack Hub 記憶體。 您可以使用與備份至 Azure 儲存體 類似的方式備份至 Azure Stack Hub 記憶體。 當您在 SQL Server Management Studio (SSMS) 內建立備份時,您必須手動輸入組態資訊。 您無法使用 SSMS 來建立記憶體容器或共用存取簽章。 SSMS 只會連線到 Azure 訂用帳戶,而不是 Azure Stack Hub 訂用帳戶。 相反地,您必須在 Azure Stack Hub 入口網站或 PowerShell 中建立記憶體帳戶、容器和共用存取簽章。
注意
共用存取簽章是來自 Azure Stack Hub 入口網站的 SAS 令牌,字串中沒有前置的 『?』。 如果您使用入口網站中的複製函式,您必須刪除前置 『?』,令牌才能在 SQL Server 內運作。
在 SQL Server 中設定並設定備份目的地之後,您就可以備份至 Azure Stack Hub Blob 記憶體。