Optimera databaslagring
För att optimera databaslagringen bör du överväga proportionell fyllning och tempdb-konfiguration.
Förstå I/O-prestanda
I/O-prestanda kan vara avgörande för ett databasprogram. Med Azure SQL sköter du inte den fysiska filplaceringen, men det finns metoder för att se till att du får de I/O-prestanda du behöver.
In-/utdata per sekund (IOPS) kan vara viktigt i ditt program. Se till att du har valt rätt tjänstnivå och virtuella kärnor för dina IOPS-behov. Förstå hur du mäter IOPS för dina frågor lokalt om du migrerar till Azure. Om du har IOPS-begränsningar är det möjligt att du får långa I/O-väntetider. I köpmodellen för virtuella kärnor kan du skala upp virtuella kärnor eller flytta till Affärskritisk eller Hyperskala om du inte har tillräckligt med IOPS. När du använder DTU för produktionsarbetsbelastningar rekommenderar vi att du flyttar till Premium-nivån.
I/O-svarstid är en annan viktig komponent för I/O-prestanda. Överväg att använda Affärskritisk eller Hyperskala om du vill ha snabbare I/O-svarstider för Azure SQL Database. Om du vill ha kortare I/O-svarstider för SQL Managed Instance kan du byta till nivån Affärskritisk eller öka filstorleken eller antalet filer för databasen. För att förbättra svarstiden för transaktionsloggar kan du behöva använda transaktioner med flera delstater.
Filer och filgrupper
SQL Server-experter använder ofta filer och filgrupper för att förbättra I/O-prestanda med hjälp av fysisk filplacering. Azure SQL tillåter inte att användare placerar filer i specifika disksystem. Azure SQL har dock resursåtaganden för I/O-prestanda gällande priser, IOPS och svarstider. På så sätt kan det vara en fördel att skilja användaren från den fysiska filplaceringen.
Azure SQL Database har bara en databasfil (Hyperskala har vanligtvis flera) och den maximala storleken konfigureras via Azure-gränssnitt. Det finns inga funktioner för att skapa fler filer.
Azure SQL Managed Instance har stöd för att lägga till databasfiler och konfigurera storlekar, men inte fysisk placering av filer. Du kan använda antalet filer och filstorlekar för SQL Managed Instance för att förbättra I/O-prestanda. Dessutom finns det stöd för användardefinierade filgrupper i SQL Managed Instance i hanterbarhetssyfte.
Beskriva proportionell fyllning
När du infogar 1 gigabyte data i en SQL Server-databas med två datafiler kan du förvänta dig att varje fil ökar med cirka 512 megabyte. Detta är dock inte alltid fallet. SQL Server distribuerar data baserat på storleken på varje fil. Om båda datafilerna till exempel är 2 gigabyte fördelas data jämnt. Men om en fil är 10 gigabyte och den andra är 1 gigabyte, skulle cirka 900 MB gå in i den större filen och 100 MB i den mindre. Det här beteendet är vanligt i alla databaser, men i den skrivintensiva tempdb kan ett ojämnt skrivmönster skapa en flaskhals i den största filen eftersom den hanterar fler skrivningar.
Konfigurera Tempdb i SQL Server
SQL Server identifierar antalet tillgängliga processorer under installationen och konfigurerar lämpligt antal filer, upp till åtta, med jämn storleksändring. Dessutom integreras beteendet för spårningsflaggorna 1117 och 1118 i databasmotorn, men bara för tempdb. För tempdb-tunga arbetsbelastningar kan det vara fördelaktigt att öka antalet tempdb-filer utöver åtta, vilket matchar antalet processorer på datorn.
Du använder tempdb på samma sätt för både SQL Server och Azure SQL. Observera dock att din möjlighet att konfigurera tempdb är annorlunda, inklusive placering av filer, antalet filer och storleken på filer samt tempdb konfigurationsalternativ.
SQL Server använder tempdb för olika uppgifter utöver att bara lagra användardefinierade temporära tabeller. Den används bland annat för arbetstabeller som lagrar mellanliggande frågeresultat, sorteringsåtgärder och versionsarkivet för radversionshantering. På grund av den här omfattande användningen är det viktigt att placera tempdb på den lägsta tillgängliga lagringstiden och konfigurera datafilerna korrekt.
Databasfilerna tempdb i lagras alltid automatiskt på lokala SSD-enheter, så I/O-prestanda bör inte vara ett problem.
SQL Server-proffs använder ofta mer än en databasfil för att partitioneras allokeringar för tempdb tabeller. För Azure SQL Database skalas antalet filer med antalet virtuella kärnor (till exempel två virtuella kärnor är lika med fyra filer) med högst 16. Antalet filer kan inte konfigureras via T-SQL mot tempdb, men du kan konfigurera det genom att ändra distributionsalternativet. Den maximala storleken tempdb på skalas per antal virtuella kärnor. Du får 12 filer med SQL Managed Instance, oberoende av antalet virtuella kärnor.
Databasalternativet MIXED_PAGE_ALLOCATION är inställt på AV och AUTOGROW_ALL_FILES är inställt på PÅ. Du kan inte konfigurera detta, men precis som med SQL Server är dessa de rekommenderade standardvärdena.
Funktionen tempdb för metadataoptimering som introducerades i SQL Server 2019, vilket kan minska den tunga spärrkonkurrationen, är för närvarande inte tillgänglig i Azure SQL Database eller Azure SQL Managed Instance.
Konfiguration av databas
Vanligtvis konfigurerar du en databas med T-SQL ALTER DATABASE och ALTER DATABASE SCOPED CONFIGURATION -instruktioner. Många av konfigurationsalternativen för prestanda är tillgängliga för Azure SQL. Se T-SQL-referensen ALTER DATABASE och ALTER DATABASE SCOPED CONFIGURATION för skillnaderna mellan SQL Server, Azure SQL Database och Azure SQL Managed Instance.
I Azure SQL Database är standardåterställningsmodellen fullständig återställning, vilket säkerställer att databasen kan uppfylla Azure-serviceavtal (SLA). Det innebär att minimal loggning för massåtgärder inte stöds, förutom tempdb, där minimal loggning tillåts.
Konfiguration av MAXDOP
Maximal grad av parallellitet (MAXDOP) kan påverka prestanda för enskilda frågor. SQL Server och Azure SQL hanterar MAXDOP på samma sätt. När MAXDOP är inställt på ett högre värde används fler parallella trådar per fråga, vilket kan påskynda frågekörningen. Den här ökade parallelliteten kräver dock extra minnesresurser, vilket kan leda till minnesbelastning och påverka lagringsprestanda. När du till exempel komprimerar radgrupper till ett kolumnarkiv kräver parallellitet mer minne, vilket kan leda till minnestryck och radgruppstrimning.
Omvänt kan inställningen MAXDOP till ett lägre värde minska minnesbelastningen, vilket gör att lagringssystemet kan prestera mer effektivt. Detta är viktigt i miljöer med begränsade minnesresurser eller höga lagringskrav. Genom att noggrant konfigurera MAXDOP kan du balansera frågeprestanda och lagringseffektivitet, vilket säkerställer optimal användning av både CPU- och lagringsresurser.
Du kan konfigurera MAXDOP i Azure SQL ungefär som i SQL Server med hjälp av följande metoder:
-
ALTER DATABASE SCOPED CONFIGURATIONför att konfigureraMAXDOPstöds för Azure SQL. - Den lagrade proceduren
sp_configureför "maximal grad av parallellitet" stöds för SQL Managed Instance. -
MAXDOPfrågetips stöds fullt ut. -
MAXDOPKonfiguration med Resource Governor stöds för SQL Managed Instance.