Azure SQL 資料庫中的超大規模彈性集區概觀
適用於:Azure SQL 資料庫
本文提供了 Azure SQL 資料庫 中超大規模彈性集區的概觀。
Azure SQL 資料庫彈性集區可讓軟體即服務 (SaaS) 開發人員將一組資料庫的價格效能最佳化在規定的預算內,同時為每個資料庫提供效能彈性。 Azure SQL 資料庫超大規模彈性集區引進超大規模資料庫共用資源模型。
如需使用 Azure CLI 或 PowerShell 建立、擴增或移動資料庫到超大規模彈性集區的範例,請檢閱 使用命令列工具進行超大規模彈性集區操作
如需超大規模資料庫彈性集區正式發行的詳細資訊,請參閱 部落格:超大規模彈性集區正式推出。
概觀
將超大規模資料庫部署至彈性集區,以在集區內的資料庫之間共用資源,並在具有不同使用模式的多資料庫中進行成本最佳化。
搭配超大規模資料庫使用彈性集區的案例:
- 當您需要在可預測時間內相應增減配置給彈性集區的計算資源,與儲存體的配置量無關。
- 當您想藉由新增一或多個讀取級別複本來向外擴增配置給彈性集區的計算資源。
- 如果您想要針對密集型寫入工作負載使用高交易記錄輸送量,即使計算資源較低也一樣。
將非超大規模資料庫新增至超大規模彈性集區會將資料庫轉換至超大規模服務層級。
架構
傳統上,獨立超大規模資料庫架構包含了三個主要的獨立元件:計算、儲存體(「頁面伺服器」),以及記錄檔 (「記錄服務」 )。 當您為超大規模資料庫建立彈性集區時,集區內的資料庫會共用計算和記錄資源。 此外,如果您選擇設定高可用性,則會使用對等且獨立的計算和記錄資源來建立每個高可用性集區。
下列描述了超大規模資料庫彈性集區的架構:
- 超大規模資料庫彈性集區是由裝載主要超大規模資料庫的主要集區所組成,如果已設定,最多四個額外的高可用性集區。
- 主要彈性集區中裝載的主要超大規模資料庫會共用 SQL Server 資料庫引擎 (sqlservr.exe) 計算處理、虛擬核心、記憶體和 SSD 快取。
- 設定主要集區的高可用性會建立額外的高可用性集區,其中包含主要集區中資料庫的唯讀資料庫複本。 每個主要集區最多可以有四個高可用性複本集區。 每個高可用性集區都會共用集區中所有次要唯讀資料庫的計算、SSD 快取和記憶體資源。
- 主要彈性集區中的超大規模資料庫都會共用相同的記錄服務。 由於高可用性集區中的資料庫沒有寫入工作負載,因此不會使用記錄服務。
- 每個超大規模資料庫都有自己的一組頁面伺服器,而且這些頁面伺服器會在主要集區的主要資料庫和高可用性集區中所有次要複本資料庫之間共用。
- 異地複寫的次要超大規模資料庫可以放入另一個彈性集區。
- 在您的資料庫連結連接字串中指定
ApplicationIntent=ReadOnly
會將您路由至其中一個高可用性集區中的唯讀複本資料庫。
下圖顯示了超大規模資料庫彈性集區的架構:
管理超大規模資料庫彈性集區資料庫
您可以使用 相同命令 來管理集區超大規模資料庫,作為其他服務層級中的集區資料庫。 請務必在建立超大規模彈性集區時指定 Hyperscale
版本。
唯一差別在於修改現有超大規模彈性集區的高可用性 (H/A) 複本數目。 若要這麼做︰
- 使用 Azure PowerShell Set-AzSqlElasticPool 命令的
HighAvailabilityReplicaCount
參數。 - 使用 Azure CLI az sql 彈性集區升級命令的
--ha-replicas
參數。
您可以使用下列用戶端工具來管理彈性集區中的超大規模資料庫:
- Azure PowerShell Az.Sql.3.11.0 或以上版本。 不支援 PowerShell AzureRM.Sql。
- Azure CLI:Az 2.40.0 版本或以上版本。
- Transact-SQL (T-SQL) 開頭:SQL Server Management Studio (SSMS) v18.12.1 或 Azure Data Studio v1.39.1。
將非超大規模資料庫轉換至超大規模彈性集區
將資料庫轉換至超大規模資料庫時,您可以將資料庫新增至現有的超大規模彈性集區。 針對這些轉換,超大規模彈性集區必須存在於與來源資料庫相同的邏輯伺服器。
將資料庫轉換至超大規模資料庫彈性集區時,請注意 每個超大規模資料庫彈性集區的資料庫數目上限。
使用 T-SQL 將非超大規模資料庫轉換至超大規模彈性集區
您可以使用 T-SQL 命令來轉換多個一般用途資料庫,並將其新增至名為 hsep1
的現有超大規模彈性集區:
ALTER DATABASE gpepdb1 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))
ALTER DATABASE gpepdb2 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))
ALTER DATABASE gpepdb3 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))
ALTER DATABASE gpepdb4 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))
在此範例中,您會藉由指定目標 SERVICE_OBJECTIVE
為超大規模彈性集區,隱含地要求從一般用途轉換至超大規模資料庫。 上述每個命令都會開始將對應的一般用途資料庫轉換至超大規模資料庫。 這些 ALTER DATABASE
命令會迅速回傳,且不會等待轉換完成。 在顯示的範例中,您會有四個此類從一般用途轉換至平行執行的超大規模資料庫。
您可以查詢 sys.dm_operation_status 動態管理檢視,監視這些背景轉換操作的狀態。
使用 PowerShell 將非超大規模資料庫轉換至超大規模彈性集區
您可以使用 PowerShell 命令來轉換多個一般用途資料庫,並將其新增至名為 hsep1
的現有超大規模彈性集區。 舉例來說,下列範例指令會執行以下步驟:
- 使用 Get-AzSqlElasticPoolDatabase Cmdlet 列出名為
gpep1
的一般用途彈性集區中的所有資料庫。 Where-Object
Cmdlet 只會篩選清單中開頭為gpepdb
的那些資料庫名稱。- 針對每個資料庫,Set-AzSqlDatabase Cmdlet 會開始轉換。 在這種情況下,,您會藉由指定名為
hsep1
的目標超大規模彈性集區,隱含地要求轉換至超大規模服務層級。-AsJob
參數可讓每個Set-AzSqlDatabase
要求平行執行。 如果您偏好逐一執行轉換,您可以移除-AsJob
參數。
$dbs = Get-AzSqlElasticPoolDatabase -ResourceGroupName "myResourceGroup" -ServerName "mylogicalserver" -ElasticPoolName "gpep1"
$dbs | Where-Object { $_.DatabaseName -like "gpepdb*" } | % { Set-AzSqlDatabase -ResourceGroupName "myResourceGroup" -ServerName "mylogicalserver" -DatabaseName ($_.DatabaseName) -ElasticPoolName "hsep1" -AsJob }
除了 sys.dm_operation_status 動態管理檢視,您還可以使用 PowerShell Cmdlet Get-AzSqlDatabaseActivity 監視這些背景轉換操作的狀態。
資源限制
下列列出在彈性集區內超大規模資料庫作業的支援限制:
- 支援硬體產生:標準系列 (Gen5)、進階系列和進階系列記憶體最佳化。
- 每個集區的虛擬核心上限:80 或 128 個虛擬核心,取決於服務等級目標。
- 每個單一超大規模資料庫支持的數據大小上限:100 TB。
- 集區中資料庫所支援的資料總限額:100 TB。
- 每個資料庫支援的事務歷史記錄輸送量上限:100 MB/秒。
- 記錄產生速率為 150 MB/秒,可作為選擇加入預覽功能。 如需詳細資訊,以及選擇加入150 MB/秒,請參閱 部落格:2024年11月超大規模資料庫增強功能。
- 集區中資料庫所支援的交易記錄總輸送量上限:131.25 MB/秒。
- 每個超大規模彈性集區最多可以有 25 個資料庫。
如需更詳細資料,請參閱針對標準系列、進階系列和進階系列記憶體最佳化的超大規模彈性集區之資源限制。
限制
請將下列限制列入考量條件:
- 不支援將現有的非超大規模彈性集區變更為超大規模版本。 轉換區段提供一些您可以使用的替代方案。
- 不支援將超大規模彈性集區版本變更為非超大規模版本。
- 若要反向轉換位於超大規模彈性集區中的合格資料庫,必須先從超大規模彈性集區中移除。 然後,獨立超大規模資料庫可以「反向轉換」至一般用途獨立資料庫。
- 對於超大規模服務層級,區域備援支援只能是在建立資料庫或彈性集區期間指定,且在佈建資源後無法修改。 如需其他資訊,請參閱 [高可用性和 Azure SQL 資料庫]。
- 不支援將具名複本新增至超大規模彈性集區。 嘗試將超大規模資料庫的具名複本新增至超大規模彈性集區會導致
UnsupportedReplicationOperation
錯誤。 反之,請以單一超大規模資料庫建立具名複本。
區域備援彈性集區考量條件
以下是區域備援超大規模資料庫彈性集區的一些考慮:
- 只有具區域備援儲存體備援的資料庫(ZRS 或 GZRS)才能新增至具區域備援的超大規模彈性集區。
- 必須建立具區域備援和區域備援備份儲存體(ZRS 或 GZRS)的獨立超大規模資料庫,才能將其新增至區域備援超大規模彈性集區。 對於不具區域備援的超大規模資料庫,請執行資料傳輸至已啟用區域備援選項的新超大規模資料庫。 必須使用資料庫複製、時間點還原或異地複本來建立複製。 如需其他資訊,請參閱 [重新部署(超大規模)]。
- 欲將超大規模資料庫從一個彈性集區移至另一個集區,區域備援和區域備援備份儲存體設定必須相符。
- 欲將資料庫從另一個非超大規模服務層級轉換至具區域備援的超大規模彈性集區:
- 透過 Azure 入口網站,先啟用區域備援和區域備援備份儲存體 (ZRS)。 接著,您可以將資料庫新增至區域備援超大規模彈性集區。
- 透過 PowerShell,先啟用區域備援。 然後使用 Set-AzSqlDatabase,確保
-BackupStorageRedundancy
參數是用來指定區域備援備份儲存體(ZRS 或 GZRS)。
已知問題
問題 | 建議 |
---|---|
將資料庫從區域備援超大規模資料庫彈性集區新增至另一個區域中具有非區域備援超大規模資料庫彈性集區的故障轉移群組,會在內部失敗,但作業似乎正在執行,而沒有任何進度。 使用 SSMS 之類的工具時,您可能會看到地區次要資料庫,但無法連線並使用異地次要資料庫。 容錯移轉群組可能會顯示地區次要資料庫的「植入 0%」狀態。 如果第二個超大規模資料庫彈性集區是區域備援,則不會發生此問題。 | 若要解決此問題,請使用 Azure PowerShell 在容錯移轉群組外部設定異地複寫,並在命令列 New-AzSqlDatabaseSecondary -ResourceGroupName "primary-rg" -ServerName "primary-server" -DatabaseName "hsdb1" -PartnerResourceGroupName "secondary-rg" -PartnerServerName "secondary-server" -AllowConnections "All" -SecondaryElasticPoolName "secondary-nonzr-pool" -BackupStorageRedundancy Local -ZoneRedundant:$false 中明確指定非區域備援。 然後,將資料庫新增到容錯移轉群組。 |
在罕見情況下,您可能會在嘗試移動/還原/將超大規模資料庫複製到彈性集區時發生錯誤 45122 - This Hyperscale database cannot be added into an elastic pool at this time. In case of any questions, please contact Microsoft support 。 |
這項限制是由於實作特定的詳細資料所造成。 如果此錯誤對您進行封鎖,請提出支援事件並要求協助。 |