Wrocław 2006 INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład XI Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl
INTERNETOWE BAZY DANYCH 1. Wprowadzenie 2. Wybrana aspekty optymalizacji 3. Zwiększanie wydajności BD
1. Wprowadzenie system wydajny optymalizacja intuicyjnie: spełnia oczekiwania klienta proces wyznaczania najlepszego rozwiązania z punktu widzenia określonych kryteriów (np. czas przetwarzania zapytań, koszt, przepustowość) punkt odniesienia punkt zmierzony np. poprzez przeprowadzenie testów, wykonanie pomiarów.
1. Wprowadzenie Podstawowe pojęcia: monitoring regularne jakościowe i ilościowe pomiary najczęściej w określonym czasie lub czasu rzeczywistego (z określonymi zasadami archiwizacji)
1. Wprowadzenie Procedura rozwiązywania problemów Znaleźć problem (problem finding) zdefiniować (problem defining) zaplanować strategie (strategy planning) wybrać najlepiej właściwą (strategy selection) sprawdzić, czy działa (strategy testing) ewaluacja końcowa (final evaluation)
1. Wprowadzenie TREŚCI OPTYMALIZACJA KODU strony WWW (prezentacji), aplikacji (np. skrypty, funkcje), bazy danych. OPTYMALIZACJA STATYCZNA DYNAMICZNA
2. Optymalizacja Optymalizacja treści stron WWW: pod kątem organizacji (architektura informacji): odpowiednia organizacja treści, menu, łatwa nawigacja i znalezienie potrzebnej informacji, organizacja (np. tematyczna, alfabetyczna, geograficzna), uwzględnienie przyzwyczajeń (np. wygląd odnośników) uwzględnienie np. wyników badań operacyjnych, prostych ankiet, śledzenia historii, wykorzystanie mechanizmu ciasteczek.
2. Optymalizacja pod kątem przystępności: uwypuklenie istotnych elementów, powiązanie elementów stanowiących logiczną całość, stosowanie odpowiedniego języka, kodowanie znaków, forma nagłówków (zasady, jak np. dla prasy, artykułów naukowych),
2. Optymalizacja pod kątem dostępności rejestracja w katalogach tematycznych, marketing i reklama, promocje.
2. Optymalizacja Optymalizacja kodu stron WWW: pod kątem szybkości wyświetlania się strony (objętości kodu), zgodności ze standardami (np. walidacja odpowiednimi narzędziami, różne wersje strony, stosowanie mechanizmów awaryjnych ), automatycznej rejestracji w systemach wyszukiwawczych tzw. pozycjonowania w systemach wyszukiwawczych.
2. Optymalizacja elementy nagłówka <HEAD> <meta http-equiv="content-type" content="text/html; charset= iso-8859-2"> <META HTTP-EQUIV="Creation-date" CONTENT="2002.03.16"> <META HTTP-EQUIV="Reply-to" CONTENT="adres zwrotny"> <meta http-equiv="content-language" content="pl"> <META NAME="Description" CONTENT="opis dokumentu"> <META name="keywords" content="słowa kluczowe"> <META NAME="Author" CONTENT="autor dokumentu"> <META NAME="Generator" CONTENT="Zajączek 3.0"> <TITLE> Tytuł </TITLE> </HEAD>
2. Optymalizacja Optymalizacja kodu php: zmniejszanie liczby połączeń z bazą danych i/lub umiejętne operowanie trwałymi połączeniami, optymalizacja zapytań (np. ograniczenie liczby, testowanie zapytań złożonych i szukanie innych możliwości, np. polecenie EXPLAIN w MySQL u), stosowanie staycznego HTML u zamiast generowania przez php jeśli możliwe, stosowanie ciągów zamkniętych pojedynczymi cudzysłowami (działają szybciej niż podwójne),
2. Optymalizacja Optymalizacja kodu php: stosowanie gotowych rozwiązań i/lub narzędzi (np. Zend Optimizer) inne techniki i narzędzia inżynieria oprogramownia (np. inspekcja, przeglądanie kodu). UWAGA: Najbardziej kosztowne (czas) są połączenie i pobieranie danych z bazy.
3. Zwiększanie wydajności BD Zwiększanie wydajność bazy danych (na przykładzie PostgreSQL): indeksy, klastry, kontrola pobierania danych: LIMIT i OFFSET, kursory.
3. Zwiększanie wydajności BD Indeksy Indeksy przyspieszają dostęp do relacji. Jeśli relacja R posiada indeks na atrybucie A, wtedy pobieramy wszystkie krotki o wartości atrybutu A = a w czasie zależnym od liczby tych krotek (nie zależnym od rozmiaru relacji R).
3. Zwiększanie wydajności BD Indeksy jednokolumnowe CREATE INDEX agenci_pseudonim ON agenci (pseudonim); wielokolumnowe CREATE INDEX agenci_plec_pseudonim ON agenci (plec, pseudonim); UWAGA: Nieprzydatny przy wyszukiwaniu postaci: SELECT * FROM agenci WHERE pseudonim= bond ;
3. Zwiększanie wydajności BD Indeksy inne (np. indeksowanie danych przestrzennych Oracle 9i Locator patrz: http://www.ds5.agh.edu.pl/~hellfire/ )
3. Zwiększanie wydajności BD Indeksy SELECT * FROM siatkarze WHERE wiek >18; Jaka będzie różnica w działaniu, jeśli kolumna wiek: a) jest indeksowana b) Nie jest indeksowana Przejrzana zostania cała tabela. Nastąpi przejście do odpowiedniego miejsca (pominięcie niewłaściwych wierszy).
3. Zwiększanie wydajności BD Indeksy STOSOWANIE INDEKSÓW ZALETA oszczędność czasu (np. przy wyszukiwaniu danych, stosowaniu złączeń), WADY przechowywanie dodatkowa informacja (np. osobny plik indeksów), zbyt wiele indeksów - wydłużenie czasu zapisu i modyfikacji danych
3. Zwiększanie wydajności BD Klastry klaster jeden lub więcej sektorów na nośniku danych, w kontekście SZBD: polecenie CLUSTER umożliwia uporządkowanie danych w pliku zgodnie z uporządkowaniem indeksu tabeli Składnia CLUSTER [indexname [ON tablename]] http://www.postgresql.org/docs/7.4/static/sql-cluster.html
3. Zwiększanie wydajności BD Polecenia: LIMIT i OFFSET LIMIT ogranicza liczbę wierszy, OFFSET umożliwia przejście do określonego wiersza, jaki będzie wynik zapytania: SELECT ID FROM wampiry ORDER BY ID LIMIT=3 OFFSET 1; 2 3 ID 1 2 3 Nazwa_wa mpira Dracula Nosferatu Jagielski Liczba ofiar 350 200 56
3. Zwiększanie wydajności BD Kursory funkcjonuje w ramach transakcji, operacje na kursorze: DECLARE deklaruje kursor, FETCH pobiera wiersze, MOVE przesuwa kursor, CLOSE zwalnie wiersze zapisane w kursorze.
3. Zwiększanie wydajności BD Kursory ID Nazwa_wampira Liczba ofiar Przykład: BEGIN WORK; 1 2 3 Dracula Nosferatu Jagielski 350 200 56 DECLARE wampiry_kursor CURSOR FOR SELECT ID FROM wampiry; MOVE 1 FROM wampiry_kursor; FETCH 2 FROM wampiry_kursor; FETCH -1 FROM wampiry_kursor; 2 CLOSE wampiry_kursor 2 3 COMMIT WORK;
4. Ciekawostka znalezione w Internecie Bibliografia uzupełniająca: Microsoft Server 2000 optymalizacja wydajności http://download.microsoft.com/download/2/3/f/23f09d42-8d97-4229-9f7c-6c6
4. Zadanie na piękny, słoneczny dzień Nadal pracujemy nad serwisem:
4. Zadanie na piękny, słoneczny dzień Już fajrant, a pracownik waszej firmy ma problemy: >> Miało być tak, że jak klikam na szkołę, to pokazują się informacje tylko o niej. A u mnie o wszystkich! <<
4. Zadanie na piękny, słoneczny dzień JEST MA BYĆ
4. Ciekawostka znalezione w Internecie