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