Google
 
Strona główna Darmowe programy, shareware Programowanie MS Excel Porady komputerowe Bazy danych Kontakt

Index Tuning Wizard - narzędzie optymalizacji indeksów


Index Tuning Wizard - narzędzie optymalizacji indeksów



Pakiet MS SQL Server zawiera narzędzie do optymalizacji indeksów o nazwie Index Tuning Wizard. Prześledźmy wykorzystanie tego narzędzia na konkretnym przykładzie.

Utworzenie tabeli

Utwórzmy tabelę tabela1 o następującej budowie:

Nazwa kolumnyTyp - dodatkowe właściwości
idint, IDENTITY(1,1)
danevarchar(50)

Można to zrobić za pomocą następującego polecenia:

CREATE TABLE tabela1 (
id int IDENTITY(1,1),
dane varchar(50)
)


Następnie wypełniamy utworzoną tabelę losowymi danymi. Do generowania danych wykorzystamy skrypt w języku Transact SQL :

DECLARE @n int
SET @n=0
WHILE @n<10000
  BEGIN
    INSERT INTO tabela1 (dane) values (cast(1000*RAND(@n*1000) as varchar(50)))
    SET @n=@n+1
  END

Spowoduje on wygenerowanie 10000 rekordów.



Utworzenie kopii tabeli bez indeksów

Utwórzmy teraz kopię tabeli tabela1 zapisując ją pod nazwą tabela2. Kopia posłuży nam do porównania palnów wykonania identycznych zapytań na tabelach zawierających identyczne dane. Jedyną różnicą będzie obecność indeksów w jednej z tabel. Kopię tabeli można wykonać za pomocą Eksportu danych. Innym wyjściem jest utworzenie tabeli tabela2 za pomocą zapytania:

CREATE TABLE tabela2 (
id int IDENTITY(1,1),
dane varchar(50)
)


i przekopiowanie danych z tabeli tabela1 do tabela2 za pomocą zapytania:

INSERT INTO tabela2 (dane) SELECT dane FROM tabela1

Zapytanie SELECT, dla którego będziemy optymalizować indeksy

Optymalizacja indeksów w tabeli zawsze dotyczy konkretnego zapytania. Dlatego musimy je sformułować. Oto ono:

SELECT id,dane FROM tabela1 WHERE dane > '1590.999' ;

Zapytanie to zapisujemy w pliku indeksy1.sql.

Optymalizacja indeksów

Teraz można już uruchomić Index Tuning Wizard. Po uruchomieiu Enterprise Managera wybieramy z menu Tools | Wizards. Następnie wybieramy Management | Index Tuning Wizard. Klikamy dwa razy "Dalej" i następnie w oknie "Specify workload" wybieramy plik indeksy1.sql i klikamy "Dalej". W następnym oknie "Select Table to tune" wybieramy tabelę tabela1 i klikamy "Dalej". Spowoduje to rozpoczęcie analizy. W jej wyniku kreator zaproponował utworzenie indeksu i określił szacunkowy wzrost wydajności spowodowany jego zastosowaniem.

Index Tuning Wizard - wynik analizy


Klikamy "Dalej" i w oknie "Schedule Index Update Job" zaznaczamy "Apply changes".



Porównanie planów wykonania zapytań z i bez indeksów

Aby prównać plany wykonania zapytań z indeksami i bez indeksów należy w Query Analyzerze wpisać dwa zapytania:

SELECT id,dane FROM tabela1 WHERE dane > '1590.999' ;
SELECT id,dane FROM tabela2 WHERE dane > '1590.999' ;

i z menu Query wybieramy "Dispaly Estimated Execution Plan". Pojawią się wtedy dwa plany wykonania: jeden dla tabeli z indeksami i jeden dla tabeli bez indeksów. Porównanie wartości procentowych znajdujących się po "Query cost (relative to the batch)" pozwala porównać wydajność zapytań. Zgodnie z oczekiwaniami zapytanie z wykorzystaniem indeksów jest wydajniejsze przy czym koszt zapytania z indeksem ma się do kosztu zapytania bez indeksu jak 3/7.

Porównanie wydajności zapytań z indeksem i bez indeksu



 

Copyright © 2006-2010 programowaniePC.pl