Prezentacja z obrony pracy - Warszawska Wyższa Szkoła Informatyki

Transkrypt

Prezentacja z obrony pracy - Warszawska Wyższa Szkoła Informatyki
Warszawska Wyższa
Szkoła Informatyki
Warszawa 2011
Optymalizacja wydajności zapytań
w testowaniu schematu bazy danych
Autor: Hubert Kwiatkowski
Promotor: dr inż. Paweł Figat, mgr inż. Andrzej Ptasznik
Slajd 1/16
Plan prezentacji
•
•
•
o
o
•
o
o
o
o
o
o
•
Wstęp - dziedzina przedmiotowa
Cel pracy
Część teoretyczna
Relacyjne bazy danych
Technologie: XML, wyszukiwanie pełnotekstowe, HIERARCHYID
Część praktyczna
Opis problemu
Schematy bazy danych
Typowe zapytania
Optymalizacja zapytań
Testy wydajności
BD Tester
Podsumowanie
Slajd 2/16
Wstęp: optymalizacja zapytań
• Cel: zwiększenie wydajności podsystemu bazodanowego
• Kryteria wydajności: czas realizacji zapytań, przepustowość,
skalowalność
Proces optymalizacji:
•
•
•
•
•
Projekt struktury bazy danych
Dostrajanie zapytań
Dobór indeksów
Poziom współbieżności – blokady
Wąskie gardła sprzętowe – procesor,
pamięć operacyjna i masowa
Slajd 3/16
Cel pracy
Celem pracy jest analiza wydajności
zapytań dla różnych wariantów
projektowych schematu bazy danych.
Odpowiedź na pytanie:
Czy klasyczny schemat bazy danych daje
najlepsze rezultaty pod względem wydajności
zapytań?
Slajd 4/16
Relacyjne bazy danych
•
•
•
•
•
Rys historyczny - model relacyjny Codda, język SQL
Normalizacja danych
Logiczna i fizyczna organizacja danych
Proces realizacji zapytania
Optymalizacja zapytań
Slajd 5/16
Technologie
XML – uniwersalny język formalny służący do reprezentowania różnych
danych w strukturalizowany sposób [Wikipedia]
Wyszukiwanie pełnotekstowe – usługa umożliwiająca
przeszukiwanie dużych fragmentów tekstów pod kątem
znaczeń poszczególnych słów i całych fraz.
HIERARCHYID – obiektowy typ danych, umożliwiający
przechowywanie i obsługę danych hierarchicznych
Slajd 6/16
Opis problemu
• Wielodziedzinowy system ogłoszeniowy (odpowiednik
funkcjonalny Otomoto)
• Przedmiot ogłoszenia scharakteryzowany dziesiątkami cech
• Hierarchiczna struktura kategorii ogłoszeń
• Problemy:
o
o
Efektywne wyszukiwane ogłoszeń po ich cechach,
przykładowo: 100 tys. ogłoszeń * 30 cech = 3 mln wierszy
Trudności w oszacowaniu docelowego obciążenia systemu (wraz ze
wzrostem popularności serwisu liczba internautów będzie rosła)
Slajd 7/16
Schematy baz danych
Eksperymentalny dobór możliwych do zastosowania
wariantów schematów baz danych:
• Wariant klasyczny (3 PN, 2 warianty zapytań)
• Wariant zdenormalizowany
• Wariant XML
o
o
Formatowanie nie uwzględniające typów danych
Formatowanie uwzględniające typy danych (walidacja XML Schema)
• Wariant z wyszukiwaniem pełnotekstowym
o
o
Cechy liczbowe w kolumnach
Identyfikacja możliwych przedziałów, przypisanie unikalnych identyf.
Slajd 8/16
Typowe zapytania
Dwie typowe grupy zapytań obciążających bazę danych:
• Zapytania o „długim” czasie realizacji
• Zapytania o „krótkim” czasie realizacji występujące często
Typowe zapytania dla przedstawionego problemu:
• Wyszukiwanie ogłoszeń spełniających ustalone
kryteria (cechy, kategorie, inne atrybuty ogłoszenia np. cena)
• Spis ogłoszeń w danej kategorii podzielony na podstrony
(podczas przeglądania ogłoszeń na stronie www)
• Pobieranie wszystkich informacji o danym ogłoszeniu
Slajd 9/16
Optymalizacja zapytań
• Cel: wyznaczenie jak najbardziej efektywnego planu realizacji
zapytania (kryterium – czas realizacji zapytania)
Realizacja:
• Przygotowanie wstępnych wersji 15 zapytań
• Analiza planu wykonania zapytania – wyszukanie
„wąskich gardeł” wydajnościowych
• Dostrajanie zapytania – przeredagowanie fragmentów
zapytania sprawiających trudności optymalizatorowi
• Dobór i dostrajanie indeksów
Slajd 10/16
Wyniki - optymalizacja
Średni czas realizacji zapytań
znorm. intersect
znorm. exists
zdenorm.
xml 1
zapytanie 0
zapytanie 1
xml 2
zapytanie 2
pełnot. 1
pełnot. 2
0
200
400
600
800
1000
1200
1400
1600
czas [ms]
Slajd 11/16
Testy wydajności
• Przygotowanie danych testowych
o
Wykorzystanie danych zbliżonych do rzeczywistych
• Procedura testowa
o
o
o
Minimalizacja wpływu czynników zewnętrznych
Uśredniony wynik z kilku pomiarów
Czyszczenie pamięci podręcznej (dane, plany zapytań)
• Pomiar wydajności zapytań
o
o
o
Zoptymalizowane zapytania dla poszczególnych
wariantów schematów baz danych
Pomiar dla najlepszego i najgorszego przypadku (cache)
Skalowalność każdego rozwiązania – testy wieloużytkownikowe
Slajd 12/16
BD Tester
• Aplikacja umożliwiająca przeprowadzenie
wieloużytkownikowych testów obciążeniowych bazy danych
• Realizacja – .NET C# 3.5, technologia klient-serwer
• Możliwości aplikacji:
o Generowanie losowych sekwencji testowych wg
zdefiniowanego scenariusza testowego
o Konfigurowanie przebiegu testu tylko na maszynie serwera
o Synchronizacja przebiegu testów pomiędzy wieloma maszynami
klienckimi
o Komunikacja z maszynami klienckimi w celu odebrania wyników
testów
Slajd 13/16
Wyniki – testy obciążeniowe
Czas realizacji zapytań dla 1 instancji klienckiej
znorm. intersect
znorm. exists
zdenorm.
xml 1
zapytanie 0
zapytanie 1
xml 2
zapytanie 2
pełnot. 1
pełnot. 2
0
50
100
150
200
250
300
350
czas [s]
Slajd 14/16
Wyniki – testy obciążeniowe
Czas realizacji zapytań dla 5 instancji klienckich
znorm. intersect
znorm. exists
zdenorm.
xml 1
zapytanie 0
zapytanie 1
xml 2
zapytanie 2
pełnot. 1
pełnot. 2
0
100
200
300
400
500
600
700
800
czas [s]
Slajd 15/16
Podsumowanie
Na podstawie przeprowadzonego procesu optymalizacji zapytań oraz testów
obciążeniowych można stwierdzić, że najwydajniejszy jest zdenormalizowany
wariant schematu bazy danych, a tym samym postawiona na wstępie hipoteza jest
błędna. Jednakże posiada on wiele wad funkcjonalnych, które ograniczają jego
praktyczne zastosowanie:
•
Anomalie aktualizacji
•
Utrata części informacji (np. cechy typu pole wyboru)
•
Konieczność użycia instrukcji DDL zamiast DML (np. dodanie cechy)
•
Nadzór nad indeksami i ich czasochłonne przebudowy
Dziękuję za uwagę.
Slajd 16/16