Narzędzia używane podczas laboratorium Tworzenie bazy danych

Transkrypt

Narzędzia używane podczas laboratorium Tworzenie bazy danych
Laboratorium IBM DB2 – Wydajność
1
Narzędzia używane podczas laboratorium
DB2 Shell
Narzędzie do uruchamiania poleceń db2. Można uruchamiać wsadowo skrypty:
db2 –tvf skrypt.sql
DB2 Workload Performance Advisor
Narzędzie do analizy działania sposobu bazy danych dla podanych zapytań SQL. Jako parametr można podać
„workload” – zestaw danych do analizy lub po prostu zapytanie SQL.
db2advis –d baza –i skrypt.sql
DB2 Benchmark
Narzędzie mierzące rzeczywisty czas wykonania skryptu podanego jako parametr. Sposób użycia:
db2batch –d baza –f skrypt.sql
Event Monitor
Obiekt tworzony w bazie danych, który automatycznie rejestruje aktywność bazy danych. Na podstawie tych
danych można tworzyć „workloady” z analizą nadłużej wykonywanych zapytań.
Uwaga! wszystkie skrypty używane podczas laboratorium znajdują się w katalogu c:/labdb2
Tworzenie bazy danych
Stworzyć nową bazę test (create database test)
Podłączyć się do niej (connect to test)
Wykonać skrypt explain.ddl (db2 –tvf explain.ddl)
Stworzyć tabelę casdat (db2 –tvf crsacdat.sql)
Załadować dane do tabeli casdat (db2 –tvf casdat_dump.sql)
Jeśłi operacja trwa dłużej niż 5 minut – przerwać ją, sprawdzić ile rekordów zostało załadowanych i usunąć
wszystkie załadowane rekordy.
Załadować dane do tabeli z pliku casdat_load.txt polecenem LOAD (db2 load from
'casdat_load.txt' of del insert into casdat)
Część 1: Analiza zapytań (query rewriting)
Zadanie 1:
Podaj numery CAS odczynników, które mają więcej właściwości typu SENT niż typu RENT
Rozwiązanie 1 – jak na laboratorium z Baz Danych (q1a):
select c1.cas,count(distinct c1.data)
from casdat c1
where c1.type='sent'
group by c1.cas
having count(distinct c1.data)>
(select count(distinct c2.data) from casdat c2 where c2.type='rent' and
c2.cas=c1.cas);
Uruchom zapytanie – sprawdź liczbę wierszy i czas wykonania.
Sprawdź czas wykonania tego zapytania za pomocą db2batch
Sprawdź przewidywany czas wykonania za pomocą db2advis
Rozwiązanie 2 (q1b):
select c1.cas from
casdat c1 join casdat c2 on c1.cas=c2.cas
przygotował: [email protected]
Laboratorium IBM DB2 – Wydajność
2
where c1.type='sent' and c2.type='rent'
group by c1.cas
having count(distinct c1.data)>count(distinct c2.data);
Uruchom zapytanie – sprawdź liczbę wierszy i czas wykonania.
Sprawdź czas wykonania tego zapytania za pomocą db2batch
Sprawdź przewidywany czas wykonania za pomocą db2advis
Porównaj czasy obu rozwiązań
Pytanie: dlaczego drugie zapytanie zwraca mniej odczynników niż pierwsze?
Zidentyfikuj jakie odczynniki są pomijane i zmodyfikuj zapytanie q1b tak , aby zwracało te same odczynniki co
zapytanie q1a
Zadanie2
Znajdź, które odczynniki mają parametry wszystkich typów.
Rozwiązanie 1 – tak jak na wykładzie z Baz Danych (q2a):
select cas,type,data from casdat c1
where
not exists(
select distinct type from casdat c2 where type not in
(select type from casdat c3 where c3.cas=c1.cas)
);
Uruchom zapytanie.
Gdy Ci się znudzi oczekiwanie – przerwij wykonanie (Ctr-C) i przejdź do następnego punktu.
Sprawdź przewidywany czas wykonania za pomocą db2advis.
Rozwiązanie 2 (q2b):
select cas, count(distinct type)
from casdat
group by cas
having count(distinct type)=(select count(distinct type) from casdat);
Uruchom zapytanie – sprawdź liczbę wierszy i czas wykonania.
Sprawdź przewidywany czas wykonania za pomocą db2advis.
Porównaj czasy obu rozwiązań.
Część 2: Użycie indeksów i statystyk
W0: Wykonać zapytanie (select.sql):
select c0.cas,c0.data,c.data from casdat c0, casdat c where c0.type='name' and
c0.cas = c.cas and c.type='rent' and c.data like '%12%' group by
c0.cas,c0.data,c.data order by c0.cas;
1. Uruchomić dla tego zapytania program DB2 Workload Preformance Advisor:
db2advis –d test –i select.sql
2. Przeanalizować wynik i zapamiętując wartość pola „Liczba jednostek timeron” oraz zalecenia Advisora
dotyczące indeksów.
3. Uruchomić dla tego samego zapytania program Benchmark.
db2batch –d test –f select.sql
4. Przeanalizować wynik zapamiętując czas wykonania.
Powtórzyć kroki 1-4 po każdym punkcie W1-W8 poniżej, zapamiętując wyniki:
W1: Stworzyć statystyki dla tabeli (runstats on table db2labX.casdat)
W2: Stworzyć indeks na pole type
create index ind_type on casdat (type asc)
W3: Stworzyć statystyki dla indeksu:
przygotował: [email protected]
Laboratorium IBM DB2 – Wydajność
3
runstats on table db2labX.casdat for index db2labX.ind_type
W4: Stworzyć index ind_tcd
create index ind_tcd on casdat (type asc, cas asc, data asc)
W5: Utworzyć statystyki dla indeksu
runstats on table db2labX.casdat for index db2labX.ind_tcd
W6: Stworzyć drugi indeks na pola data, type, cas (ind_dtc):
create index ind_dtc on casdat(data asc, type asc, cas asc)
W7: Usunąć indeksy ind_type i ind_tcd (drop index ind_type)
W8: Utworzyć statystyki dla indeksu ind_dtc
runstats on table db2labX.casdat for index db2labX.ind_dtc
Podsumować osiągnięte rezultaty i wyciągnąć wnioski.
Część 3: Użycie event monitora
Usunąć wszystkie indeksy
Usunąć (o ile jest) katalog ~/temp (rmdir temp)
Stworzyć katalog ~/temp (mkdir temp)
Stworzyć monitor zdarzeń (event monitor):
create event monitor mymon1 for database, statements write to file
‘/home/db2labX/temp’
Uaktywnić monitor (set event monitor mymon1 STATE=1)
Wykonać zapytanie z pliku (db2 –tvf select.sql)
Wyłączyć monitor (set event monitor mymon1 STATE=0)
Zapamiętać zarejestrowane zdarzenia do pliku e1.txt
(db2evmon –path /home/db2labX/temp > evmon.txt)
Znaleźć w pliku zdarzenia odpowiadające operacjom: prepare, open, describe, close dla zapytania i zapamiętać
ich czasy wykonania (C1).
Stworzyć indeks ind_type oraz statystyki dla tego indeksu:
create index ind_type on casdat (type asc);
runstats on table db2labX.casdat for index db2labX.ind_type
Uaktywnić monitor
Wykonać zapytanie z pliku
Wyłączyć monitor
Zapamiętać zdarzenia do pliku evmon.txt
Znaleźć w pliku zdarzenia odpowiadające operacjom: prepare, open, describe, close dla zapytania i zapamiętać
ich czasy wykonania (C2)
Stworzyć indeks ind_tcd oraz statystyki dla tego indeksu:
create index ind_tcd on casdat (type asc, cas asc, data asc);
runstats on table db2labX.casdat for index db2labX.ind_tcd
Uaktywnić monitor
Wykonać zapytanie z pliku
Wyłączyć monitor
Zapamiętać zdarzenia do pliku evmon.txt
Znaleźć w pliku zdarzenia odpowiadające operacjom: prepare, open, describe, close dla zapytania i zapamiętać
ich czasy wykonania (C3)
Porównać czasy wykonania dla danych indeksowanych i bez indeksów (C1,C2 i C3)
przygotował: [email protected]