Zmniejszanie obciążenia dostrajania serwera produkcyjnego
Dotyczy:programu SQL Server
Azure SQL Database
Doradca dostrajania aparatu bazy danych opiera się na optymalizatorze zapytań w celu analizowania obciążenia i tworzenia zaleceń dotyczących dostrajania. Wykonanie tej analizy na serwerze produkcyjnym powoduje dodanie obciążenia serwera i może zaszkodzić wydajności serwera podczas sesji dostrajania. Można zmniejszyć wpływ na obciążenie serwera podczas sesji dostrajania przy użyciu serwera testowego oprócz serwera produkcyjnego.
Jak doradca dostrajania aparatu bazy danych używa serwera testowego
Tradycyjnym sposobem korzystania z serwera testowego jest skopiowanie wszystkich danych z serwera produkcyjnego na serwer testowy, dostosowanie serwera testowego, a następnie zaimplementowanie zalecenia na serwerze produkcyjnym. Ten proces eliminuje wpływ wydajności na serwer produkcyjny, ale mimo to nie jest optymalnym rozwiązaniem. Na przykład kopiowanie dużych ilości danych z środowiska produkcyjnego na serwer testowy może zużywać znaczne ilości czasu i zasobów. Ponadto sprzęt serwera testowego jest rzadko tak zaawansowany, jak sprzęt wdrożony dla serwerów produkcyjnych. Proces dostrajania opiera się na optymalizatorze zapytań, a generowane przez niego zalecenia są częściowo oparte na podstawowym sprzęcie. Jeśli sprzęt serwera testowego i produkcyjnego nie jest identyczny, jakość rekomendacji doradcy dostrajania aparatu bazy danych zostanie zmniejszona.
Aby uniknąć tych problemów, doradca dostrajania aparatu bazy danych dostraja bazę danych na serwerze produkcyjnym, odciążając większość obciążenia dostrajania na serwerze testowym. Robi to przy użyciu informacji o konfiguracji sprzętu serwera produkcyjnego i bez faktycznego kopiowania danych z serwera produkcyjnego na serwer testowy. Doradca dostrajania aparatu bazy danych nie kopiuje rzeczywistych danych z serwera produkcyjnego do serwera testowego. Kopiuje tylko metadane i niezbędne statystyki.
W poniższych krokach opisano proces dostrajania produkcyjnej bazy danych na serwerze testowym:
Upewnij się, że użytkownik, który chce użyć serwera testowego, istnieje na obu serwerach.
Przed rozpoczęciem upewnij się, że użytkownik, który chce użyć serwera testowego, aby dostroić bazę danych na serwerze produkcyjnym, istnieje na obu serwerach. Wymaga to utworzenia użytkownika i jego identyfikatora logowania na serwerze testowym. Jeśli jesteś członkiem sysadmin stałej roli serwera na obu komputerach, ten krok nie jest konieczny.
Dostrajanie obciążenia na serwerze testowym.
Aby dostroić obciążenie na serwerze testowym, należy użyć pliku wejściowego XML z narzędziem wiersza polecenia dta. W pliku wejściowym XML określ nazwę serwera testowego za pomocą podelementu TestServer, oprócz podania wartości dla innych podelementów w elemencie nadrzędnym TuningOptions.
Podczas procesu dostrajania Doradca dostrajania silnika baz danych tworzy tymczasową bazę danych na serwerze testowym. Aby utworzyć tę szkieletową bazę danych i dostroić ją, Database Engine Tuning Advisor wykonuje wywołania do serwera produkcyjnego w celu uzyskania następujących elementów:
Doradca dostrajania aparatu bazy danych importuje metadane z produkcyjnej bazy danych do bazy danych powłoki serwera testowego. Te metadane obejmują puste tabele, indeksy, widoki, procedury składowane, wyzwalacze itd. Dzięki temu zapytania dotyczące obciążenia mogą być wykonywane na bazie danych powłoki testowego serwera.
Doradca dostrajania aparatu bazy danych importuje statystyki z serwera produkcyjnego, dzięki czemu optymalizator zapytań może dokładnie zoptymalizować zapytania na serwerze testowym.
Doradca dostrajania aparatu bazy danych importuje parametry sprzętowe określające liczbę procesorów i dostępną pamięć z serwera produkcyjnego w celu udostępnienia optymalizatorowi zapytań informacji potrzebnych do wygenerowania planu zapytania.
Po zakończeniu strojenia bazy danych powłoki serwera testowego, Doradca Strojenia Aparatu Bazy Danych generuje zalecenie strojenia.
Zastosuj zalecenie otrzymane w wyniku dostrajania serwera testowego na serwerze produkcyjnym.
Na poniższej ilustracji przedstawiono scenariusz serwera testowego i serwera produkcyjnego:
Notatka
Funkcja konfiguracji serwera testowego nie jest obsługiwana w graficznym interfejsie użytkownika (GUI) Doradcy optymalizacji aparatu bazy danych.
Przykład
Najpierw upewnij się, że użytkownik, który chce wykonać dostrajanie, istnieje zarówno na serwerach testowych, jak i produkcyjnych.
Po skopiowaniu danych użytkownika na serwer testowy, można zdefiniować sesję dostrajania serwera testowego w pliku wejściowym XML Doradcy dostrajania silnika bazy danych. Poniższy przykładowy plik wejściowy XML ilustruje sposób określania serwera testowego w celu dostosowania bazy danych za pomocą doradcy dostrajania aparatu bazy danych.
W tym przykładzie baza danych MyDatabaseName
jest dostrojona do MyServerName
. Skrypt Transact-SQL, MyWorkloadScript.sql
, jest używany jako obciążenie robocze. To obciążenie zawiera zdarzenia wykonywane względem MyDatabaseName
. Większość wywołań optymalizatora zapytań do tej bazy danych, które są częścią procesu dostrajania, obsługuje baza danych systemowa, która znajduje się w MyTestServerName
. Baza danych powłoki składa się z metadanych i statystyk. Ten proces powoduje odciążenie obciążenia dostrajania na serwerze testowym. Gdy Doradca Dostrajania Aparatu Bazy Danych generuje rekomendację przy użyciu tego pliku XML, powinien rozważyć tylko indeksy (<FeatureSet>IDX</FeatureSet>
), nie partycjonować i nie musi zachowywać żadnych istniejących fizycznych struktur projektowych w 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>
Zobacz też
zagadnienia dotyczące używania serwerów testowych