| Wstęp | |
| Składnia | |
| Opcje dta.exe | |
| Opcje ogólne | |
| Opcje związane z połączeniem do bazy danych | |
| Opcje związane z konfiguracją danych wejściowych | |
| Opcje związane z dostrajaniem | |
| Przeczytaj pozostałe części tego artykułu |
Artykuł jest kontynuacją serii „SQL Server 2005 w linii poleceń” rozpoczętej w marcu bieżącego roku przez Pawła Potasińskiego. Jak wtedy zauważono, administracja serwerem baz danych Microsoft SQL Server 2005 nie ogranicza się do umiejętnego korzystania z narzędzi klienckich wyposażonych w interfejs graficzny, takich jak Management Studio. Każdy administrator baz danych powinien umieć sprawnie posługiwać się odpowiednikami narzędzi graficznych, które umożliwiają wykonanie tych samych (a czasami także większej ilości) poleceń. W niniejszym artykule zostanie przedstawione kolejne narzędzie – dta.exe.
Narzędzie dta jest odpowiednikiem Database Engine Tuning Advisor. Za pomocą dta z linii poleceń można dokonać analizy informacji uzyskanych z programu SQL Server Profiler (workload – dane testowe) bądź skryptu TSQL. W wyniku działania dta uzyskiwane są rekomendacje dotyczące m.in. indeksów, widoków indeksowanych oraz partycjonowania, co ma znaczący wpływ na poprawę wydajności serwera baz danych. Rekomendacje generowane przez dta są w postaci skryptów TSQL, co z kolei daje możliwość ich natychmiastowego wprowadzenia w życie.
Pełna lista opcji narzędzia dta prezentuje się następująco (zgodnie z Books Online z maja 2007 r. )
dta [ -? ] |
[
[ -S server_name[ \instance ] ]
{
{ -U login_id [-P password ] }
| –E
}
{ -D database_name [ ,...n ] }
[-d database_name ]
[ -Tl table_list | -Tf table_list_file ]
{ -if workload_file | -it workload_trace_table_name }
{ -s session_name | -ID session_ID }
[ -F ]
[ -of output_script_file_name ]
[ -or output_xml_report_file_name ]
[ -ox output_XML_file_name ]
[ -rl analysis_report_list [ ,...n ] ]
[ -ix input_XML_file_name ]
[ -A time_for_tuning_in_minutes ]
[ -n number_of_events ]
[ -m minimum_improvement ]
[ -fa physical_design_structures_to_add ]
[ -fp partitioning_strategy ]
[ -fk keep_existing_option ]
[ -fx drop_only_mode ]
[ -B storage_size ]
[ -c max_key_columns_in_index ]
[ -C max_columns_in_index ]
[ -e | -e tuning_log_name ]
[ -N online_option]
[ -q ]
[ -u ]
[ -x ]
[ -a ]
]
Zapewne wielu administratorów baz danych zdążyło na pewno zaznajomić się z graficznym odpowiednikiem dta. Wobec tego już na pierwszy rzut oka widać, iż wykorzystując dta z linii poleceń można wykonać takie same operacje, jak za pomocą graficznego interesu DTA.
Narzędzie dta.exe oferuje pokaźny zbiór opcji, który umożliwia utworzenie komendy sterującej dokładnie odpowiadającej potrzebom użytkownika. Poniżej zostaną opisane szczegółowo wszystkie opcje z podziałem według ich zastosowań.
-?
Wyświetla informacje o używaniu narzędzia.
-q
Uruchamia tryb ‘cichy’, tzn. żadna informacja (także dotycząca postępu w dostrajaniu) nie zostanie wypisana do okna konsoli.
-u
Uruchamia Database Engine Tuning Advisor w trybie graficznym. Wszystkie podane parametry spowodują ustawienie uruchomienia graficznego środowiska z odpowiednimi opcjami.
-x
Uruchamia sesję dostrajania.
-S server_name[ \instance]
Określa nazwę serwera oraz/lub nazwę instancji aparatu SQL Server, do którego należy się podłączyć. W przypadku połączenia do domyślnej instancji na lokalnym serwerze nie trzeba podawać żadnej wartości dla opcji –S. W przypadku, gdy istnieje konieczność połączenia się do instancji nazwanej lub zdalnego serwera, jego nazwa musi zostać określona.
dta –S ezcontr2\office
-E
Pozwala na użycie zaufanego połaczenia (trusted connection) zamiast konieczności podania hasła. Należy pamiętać, że jeden z dwóch prametrów: -E lub –U (który pozwala podać nazwę użytkownika) musi zostać określony.
dta –E
-U login_id
Określa login potrzebny do połączenia się z instancją serwera baz danych SQL Server.
dta –U Tom
-P password
Określa hasło dla loginu loginID dla opcji -U. W przypadku, gdy ta opcja nie jest podana (i nie jest używane zaufane połączenie przez wyspecyfikowanie opcji –E) to użytkownik zostanie poproszony o podanie hasła.
dta –P test
-D database_name
Pozwala określić nazwę każdej z baz danych poddanych dostrajaniu. Można określić więcej niż jedną bazę danych jak pokazano poniżej:
dta –D ezSupport , ezLink...
Istnieje również możliwość wielokrotnego użycia argumentu –D, dla każdej bazy danych osobno:
dta –D ezSupport -D ezLink ... n
Uwaga! Argument –D jest obowiązkowy. W przypadku, gdy argument –d (opisany poniżej) nie został określony, to dta początkowo łączy się do bazy danych, której nazwa jako pierwsza znalazła się w komendzie USE w pliku bądź tablicy dostarczonej do analizy. Jeżeli podczas analizy nie jest podana nazwa bazy danych w komendzie USE to parametr –d musi zostać określony, w przeciwnym razie nie zostaną wygenerowane żadne rekomendacje. Bezpiecznie można użyć następującej składni:
dta -D ezSupport, ezLink -d ezSupport
-d database_name
Określa bazę danych, do której narzędzie dta podłączy się po rozpoczęciu analizy. Parametr –d może być podany tylko raz, w przeciwnym razie użytkownik zostanie powiadomiony o wystąpieniu błędu.
dta -d ezSupport
W przypadku, gdy plikiem z danymi wejściowymi jest plik XML to można w nim wskazać, do jakiej bazy danych narzędzie dta połączy się po rozpoczęciu sesji dostrajania. Służy do tego element DatabaseToConnect, który można znaleźć pod elementem TunningOptions. W przypadku, gdy dostrajana jest tylko jedna baza danych to działanie opcji –d jest podobne do argumentu –d w narzędziu sqlcmd z tą różnicą, iż przypadku dta nie jest wykonywana komenda USE database_name.
-if workload_file
Określa ścieżkę oraz nazwę do pliku z danymi testowymi (workload file), który zostanie użyty jako dane wejściowe do analizy. Plik musi być w jednym z trzech formatów:
1. | trc – wygenerowany przez program SQL Server Profiler |
2. | sql – plik z instrukcjami w języku TSQL |
3. | log – plik z danymi ze śledzenia (trace file) uzyskany w SQL Server. |
Przy uruchamianiu narzędzia dta z linii polecen należy podać albo plik z danymi testowymi albo wskazać nazwę tablicy, która takie dane zawiera:
dta –if test_trace.trc
-it workload_trace_table_name
Określa nazwę tablicy zawierającej dane testowe do dostrajania. Nazwa tablicy jest określona za pomocą schematu: [database_name].[owner_name].table_name.
Objaśnienie:
| Parametr | Wartość domyślna | ||
database_name | wartość podana przy określaniu parametru –D | ||
owner_name | Dbo
| ||
table_name | Nazwa tablicy |
Jak już wspomniałem powyżej, musi zostać podana albo nazwa tablicy albo nazwa pliku zawierającego dane do analizy.
dta –if ezSupport.dbo.Workload
-ix input_XML_file_name
Określa nazwę pliku XML zawierającego informacje konfiguracyjne dla narzędzia dta. Plik XML musi być ważnym dokumentem XML zgodnym ze schematem DTASchema.xsd. Argumenty podane z linii poleceń nadpisują odpowiednie ustawienia w pliku XML. Jedynym wyjątkiem od tej reguły są opcje konfiguracji użytkownika. Dla przykładu, jeżeli informacje konfiguracyjne zapisane są w elemencie Configuration pliku XML a element EvaluateConfiguration jest także podany jako jedna z opcji dostrajania, to opcje podane w pliku XML nadpiszą opcje podane jako parametry w linii komend.
dta –ix info.xml
-ID session_ID
Określa numeryczny identyfikator sesji związanej z dostrajaniem. Narzędzie dta wygeneruje odpowiedni numer automatycznie jeżeli nie zostanie on określony. Identyfikator sesji dostrajania może być użyty m.in. do wyświetlania informacji związanych z tą sesją. W przypadku, gdy nie zostanie określona wartość argumentu –ID to należy podać nazwę sesji w argumencie –s.
-s session_name
Określa nazwę sesji dla procesu dostrajania. W przypadku, gdy nie został podany argument –ID należy użyć opcji –s z wybrana nazwą:
dta –s TestSession
-e tuning_log_name
Określa nazwę tablicy lub pliku gdzie dta zapisze wszystkie zdarzenia związane z brakiem możliwości dostrojenia bazy danych.
Tablica jest tworzona na serwerze, na którym jest przeprowadzane dostrajanie. Nazwa tablicy powinna być określona za pomocą następującego formatu:
[database_name].[owner_name].table_name
Objaśnienie:
| Parametr | Wartość domyślna | ||
database_name | wartość podana przy określaniu parametru –D | ||
owner_name | Dbo
| ||
table_name | Nazwa tablicy |
W przypadku, gdy zostanie wprowadzona nazwa pliku, to powinna mieć rozszerzenie w postaci .xml –np. Log.xml.
| Uwaga: |
W przypadku dostrajania bazy danych z wykorzystaniem dużego pliku bądź tablicy uzyskanej z SQL Profilera lub skryptu zawierającego kod TSQL, Microsoft rekomenduje użycie tablicy dla przechowania logu. Narzędzie dta nie usuwa zawartości tablicy logów nawet jeżeli wygaśnie sesja, co może zdarzyć się przy długotrwałej analizie. |
-n number_of_events
Określa liczbę zdarzeń w pliku (bądź tablicy) testowym (workload file), które powinny zostać dostrojone. W przypadku, gdy argument –n został określony a dane wejściowe zawierają informacje o ich czasie trwania (np. plik z danymi ze śledzenia) to dta dostroi zdarzenia w kolejności zmniejszającego się czasu ich trwania. Określenie tego argumentu ma sens przy porównaniu fizycznych struktur baz danych (PDS) – w celu porównania dwóch konfiguracji należy określić tę samą liczbę zdarzeń do dostrojenia oraz wskazać na nieograniczony czas analizy:
dta -n 200 -A 0
W tym przypadku wskazanie na nieograniczony czas analizy jest istotne, w przeciwnym razie zostanie do parametru –A wpisana wartość domyślna, która wynosi 8h.
-A time_for_tuning_in_minutes
Parametr określa maksymalny czas w minutach, po którym analiza musi zostać zakończona, a następnie zostaje wygenerowany skrypt zawierający rekomendacje dotyczące zmian, o których wspomniałem wcześniej. W przypadku, gdy wartość parametru -A nie zostanie określona to analiza będzie trwała maksymalnie 8 godzin. Istnieje możliwość wykonywania analizy przez nieograniczony czas poprzez podanie 0 jako wartości parametru A. Oczywiście, dta może zakończyć analizę przed upłynięciem limitu czasu, jednakże dla pewności, iż wszystkie informacje zostały zinterpretowane, Microsoft rekomenduje podanie nieograniczonego czasu analizy jako wartości parametru A:
dta –A 0
-B storage_size
Określa maksymalną ilość miejsca w MB, która może zostać przeznaczona na indeks lub partycję w procesie dostrajania bazy danych.
dta –B 5
-C max_columns_in_index
Parametr określa maksymalną liczbę kolumn, które będą tworzyły rekomendowane indeksy. Wartość ta zależy od wersji silnika baz danych i dla SQL Server 200 wynosi 16, natomiast dla SQL Server 2005 jest równa 1024. Domyślna wartość wstawiana do parametru wynosi 16.
dta –C 3
-c max_key_columns_in_index
Określa maksymalną liczbę kolumn kluczowych, z których będą składały się proponowane indeksy. Domyślną wartością jest 16. Należy pamiętać, iż ten parametr jest ważny tylko dla aparatu baz danych SQL Server 2005. Narzędzie dta może również zaproponować utworzenie indeksów zawierających kolumny dołączane i wtedy całkowita liczba kolumn wchodzących w skład indeksu może być większa niż maksymalna wartość określona dla parametru.
dta –c 2
-fa physical_design_structures_to_add
Instrukcja określa, które z PDS powinny zostać zawarte w pliku z rekomendacjami. Poniższa tablica opisuje zestaw możliwych wartości parametrów.
| Wartość | Opis |
IDX_IV | Indeksy oraz widoki indeksowane. |
IDX | Tylko indeksy |
IV | Tylko widoki indeksowane. |
NCL_IDX | Tylko ideksy niezgrupowane |
Należy sprawdzić, czy opcje IDX_IVoraz IV są wspierane przez aparat bazy danych zainstalowany na serwerze, na którym jest przeprowadzana analiza. Szczegółowe informacje można znaleźć pod adresem: http://technet.microsoft.com/en-us/library/ms345360.aspx
Wartością domyślną opcji –fa jest IDX:
dta –fa IDX
-fk keep_existing_option
Określa, które z istniejących PDS muszą pozostać w bazie danych po wygenerowaniu rekomendacji. Poniższa tablica opisuje zestaw możliwych wartości parametrów dozwolonych dla opcji –fk:
| Wartość | Opis |
NONE | Żadna z istniejących struktur nie musi być zachowana |
ALL | Wszystkie istniejące struktury PDS |
ALIGNED | Wszystkie struktury “dopasowane” (All partition-aligned structures) |
CL_IDX | Wszystkie indeksy zgrupowane |
IDX | Wszystkie indeksy zgrupowane i niezgrupowane (All clustered and nonclustered indexes on tables) |
ALIGNED – oznacza, iż w rekomendacjach wygenerowanych przez dta każdy indeks jest partycjonowany dokładnie w taki sam sposób, jak tablica na której ten indeks jest zdefiniowany. Indeksy niezgrupowane utworzone na widokach indeksowanych są “dopasowane” (aligned) do tych właśnie widoków.
dta –fk IDX
-fp partitioning_strategy
Określa, czy nowe struktury PDS (indeksy bądź widoki indeksowane) zaproponowane przez dta powinny być partycjonowane oraz w jaki sposób. Poniższa tablica opisuje zestaw możliwych wartości parametrów dozwolonych dla opcji –fp:
| Wartość | Opis |
NONE | Brak partycjonowania |
FULL | Pełne partycjonowanie (dla zwiększenia wydajności serwera) |
ALIGNED | Tylko partycjonowanie „dopasowane” (dla zwiększenia zarządzalności serwera) |
Uwaga – tylko jedna wartość może zostać podana w opcji –fp. Domyślną wartością parametru jest NONE.
dta –fp FULL
-fx drop_only_mode
Określa, iż podczas analizy rozważane będzie tylko usuwanie istniejących struktur PDS a nowe struktury nie zostaną zaproponowane. Przy użyciu tej opcji dta sprawdza, które z istniejących struktur PDS są użyteczne i powinny być pozostawione i rekomenduje, które należy usunąć. Argument –fx nie przyjmuje żadnej wartości, nie może być użyty z takimi opcjami jak: -fa, -fp, i -fk ALL
dta -fx
-m minimum_improvement
Określa minimalny procentowy wzrost (w wydajności), który musi być spełniony w wyniku zastosowania rekomendacji
dta –m 10
-N online_option
Określa, czy nowe struktury PDS mają być utworzone w trybie online. Poniższa tablica opisuje możliwe wartości argumentu –N:
| Wartość | Opis |
OFF | Żadna z zaproponowanych struktur PS nie będzie tworzona w trybie online. |
ON | Wszystkie zarekomendowane PDS będą utworzone w trybie online |
MIXED | Narzęędzie dta spróbuje zarekomendować struktury PDS, które mogą być utworzone w trybie online we wszystkich przypadkach, gdzie jest to możliwe. |
W przypadku, gdy indeks jest tworzonym w trybie online, to opcja ONLINE=ON jest dołączana do jego definicji.
dta -N ON
-Tf table_list_file
Określa nazwę pliku zawierającego listę tablic, które należy dostroić. Każda nazwa tablicy powinna znajdować się w nowej linii oraz być zgodna ze schematem:
database_name.[schema_name].table_name
Na przykład, ezSupport.dbo.MessageMaster jest poprawną nazwą tablicy. Dodatkowo dla każdej tablicy zawartej w pliku można określić przewidywaną liczbę wierszy, którą narzędzie dta weźmie pod uwagę w trakcie procesu dostrajania i generowania rekomendacji. Uwaga – w pliku konfiguracyjnym pomiędzy nazwą tablicy a przewidywaną liczbą wierszy może wystąpić więcej niż jedna spacja:
database_name.[schema_name].table_name1 [number_of_rows_1]
database_name.[schema_name].table_name2 [number_of_rows2]
database_name.[schema_name].table_name 3 [number_of_rows3]
Argument –Tf może być użyty zamiennie z argumentem Tl opisanym poniżej. Jeżeli zostaną podane obydwa te parametry to wygenerowany zostanie komunikat błędu, a w przypadku gdy żaden z nich nie jest podany, to wszystkie tablice użytkowników w danej bazie danych zostaną włączone do procesu dostrajania.
-Tl table_list
Określa listę tablic, które powinny zostać dostrojone. Nazwy tablic należy oddzielać przecinkami. W przypadku, gdy tylko jedna baza danych została wyspecyfikowana w opcji –D to nazwy tablic nie muszą być poprzedzone nazwą bazy danych i schematu, do której przynależą. W przeciwnym razie należy podać pełną nazwę kwalifikowaną dla każdej tablicy: database_name.schema_name.table_name.
Jak już wspomniałem przy okazji omawiania argumentu –Tf, tylko jedna z dwóch opcji: -Tf lub –Tl może znaleźć się na liście parametrów uruchomieniowych do narzędzia dta.
| • |
![]() | Damian Widera, Project Manager & Team Lead (MCT, MCITP – DBA, MCSD.NET) |