Minska justeringsbelastningen för produktionsservern
gäller för:SQL ServerAzure SQL Database
Database Engine Tuning Advisor förlitar sig på frågeoptimeraren för att analysera en arbetsbelastning och för att göra justeringsrekommendationer. Att utföra den här analysen på produktionsservern ökar serverbelastningen och kan skada serverprestandan under justeringssessionen. Du kan minska påverkan på serverbelastningen under en justeringssession med hjälp av en testserver utöver produktionsservern.
Så här använder Database Engine Tuning Advisor en testserver
Det traditionella sättet att använda en testserver är att kopiera alla data från produktionsservern till testservern, finjustera testservern och sedan implementera rekommendationen på produktionsservern. Den här processen eliminerar prestandapåverkan på produktionsservern, men är ändå inte den optimala lösningen. Till exempel kan kopiering av stora mängder data från produktionen till testservern förbruka stora mängder tid och resurser. Dessutom är testservermaskinvaran sällan lika kraftfull som maskinvaran som distribueras för produktionsservrar. Justeringsprocessen förlitar sig på frågeoptimeraren, och de rekommendationer som genereras baseras delvis på den underliggande maskinvaran. Om test- och produktionsservermaskinvaran inte är identiska minskas rekommendationskvaliteten för Database Engine Tuning Advisor.
För att undvika dessa problem justerar Database Engine Tuning Advisor en databas på en produktionsserver genom att avlasta merparten av justeringsbelastningen på en testserver. Den gör detta med hjälp av maskinvarukonfigurationsinformationen för produktionsservern och utan att kopiera data från produktionsservern till testservern. Database Engine Tuning Advisor kopierar inte faktiska data från produktionsservern till testservern. Den kopierar bara metadata och nödvändig statistik.
Följande steg beskriver processen för att justera en produktionsdatabas på en testserver:
Kontrollera att den användare som vill använda testservern finns på båda servrarna.
Innan du börjar kontrollerar du att den användare som vill använda testservern för att finjustera en databas på produktionsservern finns på båda servrarna. Detta kräver att du skapar användaren och deras inloggning på testservern. Om du är medlem i sysadmin fast serverroll på båda datorerna är det här steget inte nödvändigt.
Justera arbetsbelastningen på testservern.
Om du vill justera en arbetsbelastning på en testserver måste du använda en XML-indatafil med kommandoradsverktyget dta. I XML-indatafilen anger du namnet på testservern med underelementet TestServer förutom att ange värdena för de andra underelementen under TuningOptions överordnade elementet.
Under justeringsprocessen skapar Database Engine Tuning Advisor en gränssnittsdatabas på testservern. För att skapa den här shell-databasen och finjustera den anropar Database Engine Tuning Advisor produktionsservern för följande:
Database Engine Tuning Advisor importerar metadata från produktionsdatabasen till testserverns gränssnittsdatabas. Dessa metadata omfattar tomma tabeller, index, vyer, lagrade procedurer, utlösare och så vidare. Detta gör det möjligt för arbetsbelastningsfrågorna att köras mot testserverns gränssnittsdatabas.
Database Engine Tuning Advisor importerar statistik från produktionsservern så att frågeoptimeraren kan optimera frågor på testservern korrekt.
Database Engine Tuning Advisor importerar maskinvaruparametrar som anger antalet processorer och tillgängligt minne från produktionsservern för att ge frågeoptimeraren den information som krävs för att generera en frågeplan.
När Database Engine Tuning Advisor har justerat testservergränssnittsdatabasen genererar den en justeringsrekommendations.
Använd rekommendationen från justering av testservern till produktionsservern.
Följande bild visar scenariot för testservern och produktionsservern:
Not
Testserverns justeringsfunktion stöds inte i det grafiska användargränssnittet (GUI) för Database Engine Tuning Advisor.
Exempel
Kontrollera först att den användare som vill utföra justeringen finns på både test- och produktionsservrarna.
När användarinformationen har kopierats till testservern kan du definiera testserverns justeringssession i XML-indatafilen Database Engine Tuning Advisor. I följande exempel visar XML-indatafilen hur du anger en testserver för att finjustera en databas med Database Engine Tuning Advisor.
I det här exemplet justeras MyDatabaseName
-databasen på MyServerName
. Skriptet Transact-SQL, MyWorkloadScript.sql
, används som arbetsmängd. Den här arbetsbelastningen innehåller händelser som körs mot MyDatabaseName
. De flesta frågeoptimerareanrop till den här databasen, som sker som en del av justeringsprocessen, hanteras av den gränssnittsdatabas som finns på MyTestServerName
. Shell-databasen består av metadata och statistik. Den här processen resulterar i att justeringskostnaderna avlastas till testservern. När Database Engine Tuning Advisor genererar sin justeringsrekommendering med hjälp av den här XML-indatafilen bör den endast överväga index (<FeatureSet>IDX</FeatureSet>
), ingen partitionering och behöver inte ha någon av de befintliga fysiska designstrukturerna i MyDatabaseName
.
<?xml version="1.0" encoding="utf-16" ?>
<DTAXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/sqlserver/2004/07/dta">
<DTAInput>
<Server>
<Name>MyServerName</Name>
<Database>
<Name>MyDatabaseName</Name>
</Database>
</Server>
<Workload>
<File>MyWorkloadScript.sql</File>
</Workload>
<TuningOptions>
<TestServer>MyTestServerName</TestServer>
<FeatureSet>IDX</FeatureSet>
<Partitioning>NONE</Partitioning>
<KeepExisting>NONE</KeepExisting>
</TuningOptions>
</DTAInput>
</DTAXML>
Se även
överväganden för att använda testservrar
Referens för XML-indatafil (Database Engine Tuning Advisor)