Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:Azure SQL Database
Dit artikel bevat een overzicht van elastische Hyperscale-pools in Azure SQL Database.
Met een elastische Pool van Azure SQL Database kunnen SaaS-ontwikkelaars (Software-as-a-Service) de prijs-prestatieverhouding voor een groep databases binnen een voorgeschreven budget optimaliseren en tegelijkertijd prestatie-elasticiteit bieden voor elke database. Elastische pools van Azure SQL Database Hyperscale introduceert een gedeeld resourcemodel voor Hyperscale-databases.
Voor voorbeelden voor het maken, schalen of verplaatsen van databases naar een elastische Hyperscale-pool met behulp van de Azure CLI of PowerShell, raadpleegt u Werken met elastische Hyperscale-pools met opdrachtregelprogramma's
Voor meer informatie over de algemene beschikbaarheid van elastische pools voor Hyperscale raadpleegt u Blog: Elastische Hyperscale-pools algemeen beschikbaar.
Overzicht
Implementeer uw Hyperscale-database in een elastische pool om resources te delen tussen databases binnen de pool en optimaliseer de kosten voor het gebruik van meerdere databases met verschillende gebruikspatronen.
Scenario's voor het gebruik van een elastische pool met uw Hyperscale-databases:
- Wanneer u de rekenresources die aan de elastische pool zijn toegewezen in een voorspelbare hoeveelheid tijd omhoog of omlaag moet schalen, onafhankelijk van de hoeveelheid toegewezen opslag.
- Wanneer u de rekenresources wilt uitschalen die zijn toegewezen aan de elastische pool door een of meer replica's op leesschaal toe te voegen.
- Als u een hoge doorvoer van transactielogboeken wilt gebruiken voor schrijfintensieve workloads, zelfs met lagere rekenresources.
Als u niet-Hyperscale-databases toevoegt aan een elastische Hyperscale-pool, worden de databases geconverteerd naar de Hyperscale-servicelaag.
Architectuur
Traditioneel bestaat de architectuur van een zelfstandige Hyperscale-database uit drie belangrijke onafhankelijke onderdelen: Compute, Storage ('Paginaservers') en het logboek ('Log Service'). Wanneer u een elastische pool maakt voor uw Hyperscale-databases, delen de databases in de pool reken- en logboekresources. Als u ervoor kiest om hoge beschikbaarheid te configureren, wordt elke pool met hoge beschikbaarheid gemaakt met een equivalente en onafhankelijke set reken- en logboekresources.
Hieronder wordt de architectuur van een elastische pool voor Hyperscale-databases beschreven:
- Een elastische Hyperscale-pool bestaat uit een primaire pool die als host fungeert voor primaire Hyperscale-databases en, indien geconfigureerd, tot vier extra pools met hoge beschikbaarheid.
- Primaire Hyperscale-databases die worden gehost in de primaire elastische pool, delen de SQL Server-database-engine (sqlservr.exe) rekenproces, vCores, geheugen en SSD-cache.
- Als u hoge beschikbaarheid configureert voor de primaire pool, worden er extra hoge beschikbaarheidspools gecreëerd die readonly-databasereplica’s bevatten voor de databases in de primaire pool. Elke primaire pool kan maximaal vier replica pools met hoge beschikbaarheid hebben. Elke pool met hoge beschikbaarheid deelt rekenkracht, SSD-cache en geheugenresources voor alle secundaire alleen-lezen databases in de pool.
- Hyperscale-databases in de primaire elastische pool delen allemaal dezelfde logboekservice. Omdat databases in de pools met hoge beschikbaarheid geen schrijfworkload hebben, maken ze geen gebruik van de logboekservice.
- Elke Hyperscale-database heeft een eigen set paginaservers en deze paginaservers worden gedeeld tussen de primaire database in de primaire pool en alle secundaire replicadatabases in de pool met hoge beschikbaarheid.
- Secundaire Hyperscale-databases met geo-replicatie kunnen in een andere elastische pool worden geplaatst.
- Als u
ApplicationIntent=ReadOnly
in de databaseverbindingsreeks opgeeft, wordt u doorgestuurd naar een alleen-lezen replicadatabase in een van de high-availability pools.
In het volgende diagram ziet u de architectuur van een elastische pool voor Hyperscale-databases:
Databases voor elastische Hyperscale-pools beheren
U kunt dezelfde opdrachten gebruiken om uw gegroepeerde Hyperscale-databases te beheren als pooldatabases in de andere servicelagen. Zorg ervoor dat u de editie opgeeft Hyperscale
bij het maken van uw elastische Hyperscale-pool.
Het enige verschil is de mogelijkheid om het aantal replica's voor hoge beschikbaarheid (H/A) in een bestaande Hyperscale-elastische pool aan te passen. Hiervoor doet u het volgende:
- Gebruik de
HighAvailabilityReplicaCount
parameter van de Azure PowerShell Set-AzSqlElasticPool-opdracht . - Gebruik de
--ha-replicas
parameter van de azure CLI az sql elastic-pool update command.
U kunt de volgende clienthulpprogramma's gebruiken om uw Hyperscale-databases in een elastische pool te beheren:
- Azure PowerShell: Az.Sql.3.11.0 of hoger. PowerShell AzureRM.Sql wordt niet ondersteund.
- De Azure CLI: Az versie 2.40.0 of hoger.
- Transact-SQL (T-SQL) te beginnen met: SQL Server Management Studio (SSMS) v18.12.1 of Azure Data Studio v1.39.1.
Niet-Hyperscale-databases converteren naar elastische Hyperscale-pools
Wanneer u een database converteert naar Hyperscale, kunt u de database toevoegen aan een bestaande elastische Hyperscale-pool. Voor deze conversies moet de elastische Hyperscale-pool bestaan op dezelfde logische server als de brondatabase.
Wanneer u databases converteert naar elastische Hyperscale-pools, moet u rekening houden met het maximum aantal databases per elastische Hyperscale-pool.
Niet-Hyperscale-databases converteren naar elastische Hyperscale-pools met behulp van T-SQL
U kunt T-SQL-opdrachten gebruiken om meerdere algemene databases te converteren en deze toe te voegen aan een bestaande elastische Hyperscale-pool met de naam 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]))
In dit voorbeeld vraagt u impliciet om een conversie van Algemeen gebruik naar Hyperscale door op te geven dat het doel SERVICE_OBJECTIVE
een elastische Hyperscale-pool is. Met elk van de bovenstaande opdrachten wordt de respectieve database voor algemeen gebruik geconverteerd naar Hyperscale. Deze ALTER DATABASE
opdrachten worden snel geretourneerd en wachten niet tot de conversie is voltooid. In het voorbeeld dat wordt weergegeven, hebt u vier dergelijke conversies van Algemeen gebruik naar Hyperscale die parallel worden uitgevoerd.
U kunt een query uitvoeren op de sys.dm_operation_status dynamische beheerweergave om de status van deze bewerkingen voor achtergrondconversie te controleren.
Niet-Hyperscale-databases converteren naar elastische Hyperscale-pools met behulp van PowerShell
U kunt PowerShell-opdrachten gebruiken om meerdere algemene databases te converteren en toe te voegen aan een bestaande elastische Hyperscale-pool met de naam hsep1
. Met het volgende voorbeeldscript worden bijvoorbeeld de volgende stappen uitgevoerd:
- Gebruik de cmdlet Get-AzSqlElasticPoolDatabase om alle databases in de General Purpose elastische pool met de naam
gpep1
weer te geven. - De
Where-Object
cmdlet filtert de lijst alleen op die databasenamen die beginnen metgpepdb
. - Voor elke database start de Set-AzSqlDatabase-cmdlet een conversie. In dit geval vraagt u impliciet een conversie aan naar de Hyperscale-servicelaag door de elastische doelpool van Hyperscale op te geven met de naam
hsep1
.- Met de
-AsJob
parameter kan elkeSet-AzSqlDatabase
aanvraag parallel worden uitgevoerd. Als u liever de conversies één voor één uitvoert, kunt u de-AsJob
parameter verwijderen.
- Met de
$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 }
Naast de sys.dm_operation_status dynamische beheerweergave kunt u de PowerShell-cmdlet Get-AzSqlDatabaseActivity gebruiken om de status van deze achtergrondconversiebewerkingen te controleren.
Beperkingen van bronnen
Zie de resourcelimieten van elastische Hyperscale-pools voor geoptimaliseerd geheugen uit de standard-serie, premium-serie en premium-serie.
Beperkingen
Houd rekening met de volgende beperkingen:
- Het wijzigen van een bestaande niet-Hyperscale elastische pool in de Hyperscale-editie wordt niet ondersteund. De sectie conversie biedt enkele alternatieven die u kunt gebruiken.
- Het wijzigen van de editie van een Hyperscale-elastische pool naar een niet-Hyperscale-editie wordt niet ondersteund.
- Als u een in aanmerking komende database wilt reverse migreren, die zich in een Hyperscale elastische pool bevindt, moet deze eerst worden verwijderd uit de elastische pool. De zelfstandige Hyperscale-database kan vervolgens worden 'omgekeerd gemigreerd' naar een zelfstandige database voor algemeen gebruik.
- Voor de Hyperscale-servicelaag kan zoneredundantie alleen worden opgegeven tijdens het maken van de database of elastische pool en kan deze niet worden gewijzigd zodra de resource is ingericht. Zie Azure SQL Database migreren naar ondersteuning voor beschikbaarheidszones voor meer informatie.
- Het toevoegen van een benoemde replica aan een elastische Hyperscale-pool wordt niet ondersteund. Als u een benoemde replica van een Hyperscale-database probeert toe te voegen aan een elastische Hyperscale-pool, treedt er een
UnsupportedReplicationOperation
fout op. Maak in plaats daarvan de benoemde replica als één Hyperscale-database.
Overwegingen voor zoneredundante elastische pools
Hier volgen enkele overwegingen voor zoneredundante elastische Hyperscale-pools:
- Alleen databases met zone-redundante opslagredundantie (ZRS of GZRS) kunnen worden toegevoegd aan elastische Hyperscale-pools met zoneredundantie.
- Een zelfstandige Hyperscale-database moet worden gemaakt met zoneredundantie en zone-redundante back-upopslag (ZRS of GZRS) om deze toe te voegen aan een zone-redundante Hyperscale elastic pool. Voor Hyperscale-databases zonder zoneredundantie voert u een gegevensoverdracht uit naar een nieuwe Hyperscale-database met de optie zoneredundantie ingeschakeld. Er moet een kloon worden gemaakt met behulp van databasekopie, herstel naar een bepaald tijdstip of geo-replica. Zie Opnieuw implementeren (Hyperscale) voor meer informatie.
- Als u een Hyperscale-database van de ene elastische pool naar een andere wilt verplaatsen, moeten de zoneredundantie en zone-redundante back-upopslaginstellingen overeenkomen.
- Een database converteren van een andere servicelaag dan Hyperscale naar een elastische Hyperscale-pool met zoneredundantie:
- Schakel eerst via Azure Portal zowel zoneredundantie als zone-redundante back-upopslag (ZRS) in. Vervolgens kunt u de database toevoegen aan de zoneredundante elastische Hyperscale-pool.
- Schakel eerst zoneredundantie in via PowerShell. Zorg er vervolgens met Set-AzSqlDatabase voor dat de
-BackupStorageRedundancy
parameter wordt gebruikt om zone-redundante back-upopslag (ZRS of GZRS) op te geven.
Bekende problemen
Probleem | Aanbeveling |
---|---|
Het toevoegen van een database vanuit een elastische Hyperscale-pool met zone-redundantie aan een failovergroep met een elastische Hyperscale-pool zonder zone-redundantie in een andere regio zal intern mislukken, maar de bewerking kan doorgaan zonder vooruitgang te boeken. U kunt de geo-secundaire database zien wanneer u hulpprogramma's zoals SSMS gebruikt, maar u kunt geen verbinding maken met en de geo-secundaire database gebruiken. De failovergroep kan de status Seeding 0%weergeven voor de geo-secundaire database. Dit probleem treedt niet op als de tweede elastische Hyperscale-pool zone-redundant is. | U kunt dit probleem omzeilen door geo-replicatie buiten de failovergroep in te stellen met behulp van Azure PowerShell, waarbij expliciet niet-zoneredundant wordt opgegeven in de opdrachtregel 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 . Vervolgens kunt u de database toevoegen aan de failovergroep. |
In zeldzame gevallen krijgt u mogelijk de fout 45122 - This Hyperscale database cannot be added into an elastic pool at this time. In case of any questions, please contact Microsoft support , bij het verplaatsen/herstellen/kopiëren van een Hyperscale-database naar een elastische pool. |
Deze beperking wordt veroorzaakt door implementatiespecifieke details. Als deze fout u blokkeert, dient u een ondersteuningsincident in en vraagt u om hulp. |
Verwante inhoud
- Werken met elastische Hyperscale-pools met opdrachtregelprogramma's
- Prijzen voor elastische pools
- Resources voor elastische pools schalen in Azure SQL database
- PowerShell gebruiken om een elastische pool in Azure SQL Database te bewaken en te schalen
- Multi-tenant SaaS-database huurpatronen
- Resourcebeheer in dichte elastische pools