Skala databasresurser dynamiskt med minimal avbrottstid

GÄLLER FÖR: Azure SQL Database Azure SQL Managed Instance

Azure SQL Database och SQL Managed Instance kan du dynamiskt lägga till fler resurser i databasen med minimal avbrottstid; Det finns dock en växling över en period där anslutningen går förlorad till databasen under en kort tid, vilket kan undvikas med hjälp av logik för omprövning.

Översikt

När efterfrågan på din app växer från ett fåtal enheter och kunder till miljoner, skalas Azure SQL Database och SQL Managed Instance i farten med minimal avbrottstid. Skalbarhet är en av de viktigaste egenskaperna hos paaS (plattform som en tjänst) som gör att du dynamiskt kan lägga till fler resurser i tjänsten när det behövs. Azure SQL Database kan du enkelt ändra resurser (processorkraft, minne, I/O-dataflöde och lagring) som allokerats till dina databaser.

Du kan minimera prestandaproblem på grund av ökad användning av ditt program som inte kan åtgärdas med hjälp av indexering eller metoder för omskrivning av frågor. Genom att lägga till fler resurser kan du snabbt reagera när databasen når de aktuella resursgränserna och behöver mer kraft för att hantera den inkommande arbetsbelastningen. Azure SQL Database kan du även skala ned resurserna när de inte behövs för att sänka kostnaden.

Du behöver inte bekymra dig om att köpa maskinvara och ändra underliggande infrastruktur. Du kan enkelt skala en databas via Azure Portal med ett skjutreglage.

Skala databasprestanda

Azure SQL Database erbjuder köpmodellen baserad på DTU och köpmodellen baserad på virtuellakärnor, medan Azure SQL Managed Instance bara erbjuder köpmodellen baserad på virtuella kärnor.

  • Köpmodellen baserad på DTU erbjuder en blandning av beräknings-, minnes- och I/O-resurser på tre tjänstnivåer för att stödja lätta till tunga databasarbetsbelastningar: Basic, Standard och Premium. Det finns prestandanivåer inom varje nivå med en blandning av dessa resurser, och du kan lägga till ytterligare lagringsresurser till dessa.
  • Med köpmodellen baserad på virtuella kärnor kan du välja antal virtuella kärnor, mängden eller minnet samt mängden och hastigheten för lagring. Den här köpmodellen erbjuder tre tjänstnivåer: Generell användning, Affärskritisk och Hyperskala.

Tjänstnivå, beräkningsnivå och resursgränser för en databas, elastisk pool eller hanterad instans kan ändras när som helst. Du kan till exempel skapa din första app på en enkel databas med hjälp av den serverlösa beräkningsnivån och sedan ändra tjänstnivån manuellt eller programmässigt till den etablerade beräkningsnivån för att uppfylla behoven i din lösning.

Anteckning

Några exempel på undantag där du inte kan ändra tjänstnivån för en databas är:

  • Databaser på tjänstnivån Hyperskala kan för närvarande inte ändras till en annan tjänstnivå.
  • Databaser som använder funktioner som endast är tillgängliga på Affärskritisk-/Premium-tjänstnivåer kan inte ändras för att använda tjänstnivån Generell användning/Standard.

Du kan justera de resurser som allokeras till databasen genom att ändra tjänstmålet eller skalningen för att uppfylla arbetsbelastningskraven. På så sätt kan du bara betala för de resurser du behöver, när du behöver dem. Se anteckningen om den potentiella påverkan som en skalningsåtgärd kan ha på ett program.

Anteckning

Dynamisk skalbarhet skiljer sig från autoskalning. Autoskalning är när en tjänst skalas automatiskt baserat på kriterier, medan dynamisk skalbarhet möjliggör manuell skalning med minimal avbrottstid. Enkla databaser i Azure SQL Database kan skalas manuellt, eller i fallet med den serverlösanivån , så att beräkningsresurserna skalas automatiskt. Elastiskapooler, som gör att databaser kan dela resurser i en pool, kan för närvarande bara skalas manuellt.

Azure SQL Database ger dig möjlighet att dynamiskt skala dina databaser:

Med Azure SQL Managed Instance kan du även skala:

  • SQL Managed Instance använder läget för virtuella kärnor och gör att du kan definiera maximalt antal CPU-kärnor och maximalt lagringsutrymme som allokeras till din instans. Alla databaser i den hanterade instansen delar de resurser som allokeras till instansen.

Effekt av upp- eller nedskalningsåtgärder

När du initierar en uppskalnings- eller nedskalningsåtgärd i någon av de varianter som nämns ovan startar du om databasmotorprocessen och flyttar den till en annan virtuell dator om det behövs. Att flytta databasmotorn till en ny virtuell dator är en onlineprocess där du kan fortsätta använda din befintliga Azure SQL Database tjänst. När måldatabasmotorn är redo att bearbeta frågor avslutas öppna anslutningar till den aktuella databasmotorn och ogenomsagda transaktioner återställs. Nya anslutningar kommer att göras till måldatabasmotorn.

Anteckning

Vi rekommenderar inte att du skalar din hanterade instans om en långvarig transaktion, till exempel dataimport, databearbetningsjobb, återskapande av index osv. körs, eller om du har en aktiv anslutning på instansen. För att förhindra att skalningen tar längre tid att slutföra än vanligt bör du skala instansen när alla långvariga åtgärder har slutförts.

Anteckning

Du kan förvänta dig en kort anslutningsbrytning när uppskalning/nedskalning är klar. Om du har implementerat omprövningslogik för tillfälliga standardfelkommer du inte att märka redundansen.

Alternativa skalningsmetoder

Att skala resurser är det enklaste och mest effektiva sättet att förbättra databasens prestanda utan att ändra databasen eller programkoden. I vissa fall kanske inte ens de högsta tjänstnivåer, beräkningsstorlekar och prestandaoptimeringar hanterar arbetsbelastningen på ett lyckat och kostnadseffektivt sätt. I så fall har du dessa ytterligare alternativ för att skala databasen:

  • Lässkalning är en tillgänglig funktion där du får en skrivskyddad replik av dina data där du kan köra krävande skrivskyddade frågor som rapporter. En skrivskyddade replik hanterar din skrivskyddade arbetsbelastning utan att påverka resursanvändningen på den primära databasen.
  • Horisontell partitionering av databaser är en uppsättning tekniker som gör att du kan dela upp dina data i flera databaser och skala dem oberoende av varandra.

Nästa steg