Projektowanie fizycznej bazy danych

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Optymalizacja zapytań
Podział i zastosowanie
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
INDEKSY I SORTOWANIE ZEWNĘTRZNE
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Komponenty bazy danych Baza danych Jest to uporządkowany zbiór powiązanych ze sobą danych charakterystycznych dla pewnej klasy obiektów lub zdarzeń,
WPROWADZENIE DO BAZ DANYCH
MS Access 2003 Kwerendy Paweł Górczyński.
25/08/ Bazy danych II Piotr Górczyński Instrukcja UPDATE.
MS Access 2000 Normalizacja Paweł Górczyński 2005.
SQL-owskie szlaki górskie
Normalizacja : Głównym celem projektowania bazy przeznaczonej dla systemu relacyjnego jest właściwa reprezentacja danych, związków i więzów. W identyfikowaniu.
Zapytania SQL: wydajność i optymalizacja
BD-LAB6 Wojciech Pieprzyca
Rozproszone bazy danych
Fizyczna organizacja danych w bazie danych Wykład 7
SQL - język relacyjnych i obiektowo-relacyjnych baz danych
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Modele baz danych - spojrzenie na poziom fizyczny
„Relacyjne Bazy Danych (Oracle)”
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Język SQL (Structured Query Language) DDL (Data Definition Language)
Teoria relacyjnych baz danych
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
Zbiór do posortowania mieści się w pamięci
Delphi i Acad cd.. l_poz := MSpace.Count; Label3.Caption:=IntToStr(l_poz); ent:=Mspace.Item(0); for l_poz := 0 to MSpace.Count-1 do begin; ent:=Mspace.Item(l_poz);
Temat 19: Organizacja informacji w bazie danych – część 2.
Temat 19: Organizacja informacji w bazie danych – część 1.
Andrzej Macioł Bazy danych – model relacyjny – cz. 1 Andrzej Macioł
SQL - Structured Query Language
Zarządzanie informacją
Wybrane zagadnienia relacyjnych baz danych
WPROWADZENIE DO BAZ DANYCH
Model relacyjny.
Bazy danych Microsoft access 2007.
PL/SQL – dalsza wędrówka
Projektowanie relacyjnych baz danych – postacie normalne
Temat 1: Strukturalny język zapytań SQL
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Wykład II Język SQL – polecenia DQL Powtórzenie wiadomości – cz. 1
Michał Krawczykowski kl. IIIB
Definiowanie kluczy w tabelach RBD
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Projektowanie relacyjnych baz danych – diagramy związków encji
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Powtórzenie wyk ł adu 10 Fizyczna organizacja danych w bazie danych. Indeksy.
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
Projektowanie bazy danych z użyciem diagramów UML Obiektowe projektowanie relacyjnej bazy danych Paweł Jarecki.
Relacja (ang.relation) Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do systemu bazy danych informacje na temat.
Projektowanie postaci formularza:
BAZY DANYCH MS Access.
Bazy Danych Wprowadzenie
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Aplikacje internetowe XML Paweł Lenkiewicz. Aplikacje internetowe – XML2 eXtensible Markup Language Uniwersalny język opisu danych Często używany we współpracy.
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Bazy danych. Baza danych (database) – magazyn danych – informacji powiązanych tematycznie, umożliwiający ich wyszukiwanie według zadanych kryteriów Baza.
Temat: Tworzenie bazy danych
Indeksy.
Fizyczna organizacja danych w bazie danych Wykład 7
Nieprawidłowo zaprojektowana tabela
Technologie Informacyjne Bazy danych
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Projektowanie fizycznej bazy danych Ulepszanie schematu tabel i postacie normalne Projektowanie indeksów

Ulepszanie schematu tabel i postacie normalne Jeśli tabela nie jest w postaci BCNF (Boyce'a-Codda), staramy się dokonać jej dekompozycji na zbiór tabel w postaci BCNF: Jeśli przy dekompozycji nie daje się zachować zależności funkcyjnych – poprzestajemy na 3-ciej postaci normalnej. Jednocześnie z dekompozycjami bierzemy pod uwagę wymagania dotyczące szybkości działania zapytań na bazie danych ewentualnie nie doprowadzając dekompozycji do końca. Aby przyśpieszyć złączanie tabel - alternatywą może być: zbudowanie klastra tabel (fizyczna denormalizacja), skorzystanie z kolumn typu referencji i kolekcji referencji (w miejscu odpowiednio kolumn klucza obcego i głównego).

Ulepszanie schematu tabel i postacie normalne Gdy aplikacja przetwarza osobno dwa zbiory wierszy może opłacać się rozdzielić tabelę na dwie np. tabelę Osoby na tabele: Studenci i Pracownicy. Tutaj dekompozycja jest pozioma, przy normalizacji natomiast, dekompozycja jest pionowa. Sprawdzamy czy tabela jest wolna od zależności wielowartościowych. Jeśli nie, dokonujemy odpowiedniej dekompozycji.

Pole działania aplikacji bazodanowej (workload) Oszacowanie liczby wierszy tabel, liczby stron. Oszacowanie liczby różnych wartości w kolumnach tabel. Najważniejsze zapytania i jak często będą używane. Najważniejsze aktualizacje i jak często będą używane. Pożądana szybkość działania tych zapytań i aktualizacji.

Analiza zapytań Dla każdego zapytania w projektowanej aplikacji: Jakich relacji i atrybutów dotyczą? Które atrybuty występują w warunkach ograniczających a które w warunkach złączenia? Jak bardzo selektywne są te warunki? Podobnie dla instrukcji INSERT/DELETE/UPDATE. 11

Decyzje Czy powinniśmy zmienić schemat tabel? Inaczej pogrupować atrybuty w ramach relacji? Normalizacja, denormalizacja (pionowy podział)? Poziomy podział (np. tabelę Osoby na osobne tabele Pracownicy i Studenci?) Perspektywa zmaterializowana z wynikami obliczeń (np. statystyka operacji na kontach bankowych) – ewentualnie z indeksami? Czy połączyć zapis kilku tabel w klaster? Złączenie – szybsze; operacje na pojedynczych tabelach wolniejsze niż bez klastra. Jakie założyć indeksy? Jakiego rodzaju? Wewnętrzny? Pogrupowany? Hasz/B+ drzewo? Dynamiczny/statyczny? Bitmapowy? Jakie atrybuty zamieścić w kluczach indeksów? 12

Indeksy Indeks główny/jednoznaczny. Indeks pogrupowany. Indeks haszowany wewnętrzny. Indeks z selektywnym wyszukiwaniem. Indeks obejmujący wszystkie atrybuty warunku wyszukiwania i ewentualnie wyrażenia (strategia tylko indeks). Indeks bitmapowy (duża liczba wierszy, mała liczba różnych wartości w kolumnie, kombinacja boolowska warunków równościowych).

Klastry Wspomagają złączenia/wyszukiwania tabel według tej samej kolumny złączenia.

Perspektywy zmaterializowane Obejmujące złączenia i/lub agregacje: ORGANIZATION HEAP - scan ORGANIZATION INDEX – wyszukiwanie Indeks można uważać za perspektywę zmaterializowaną dla atrybutów wyszukiwania.

Wybór indeksów Każdy indeks powinien wspomagać wykonywanie określonych zapytań. Zaczynamy od najważniejszych zapytań analizujac możliwe plany ich wykonania. Jaki indeks mógłby wspomóc ich wykonanie? Rozpatrujemy jaki wpływ będzie miał ten indeks na operacje INSERT/DELETE/UPDATE oraz na ilość potrzebnego miejsca na dysku? Indeks jest automatycznie tworzony przez system dla każdego klucza głównego i jednoznacznego. Indeks powinien wspomagać wykonywanie określonych zapytań 13

Wspomaganie wyszukiwania Indeks główny, jednoznaczny, selektywny (np.. Emp.Ename=:name). Indeks pogrupowany (szczególnie dla zapytań zakresowych). Indeks haszowany wewnętrzny. Indeks bitmapowy gdy mała liczba różnych wartości atrybutu, również do zliczania NULL. Indeks zawierający wszystkie atrybuty zapytania.

Wspomaganie złączenia Dla kolumn(y) złączenia w tabeli wewnętrznej złączenia. indeks główny, jednoznaczny, selektywny, indeks haszowany wewnętrzny. Klaster. Perspektywa zmaterializowana.

Wspomaganie agregacji Indeks zawierający potrzebne atrybuty do wyliczenia agregacji. Perspektywa zmaterializowana.

Uwagi Ponieważ tylko jeden indeks może być wewnętrzny dla jednej relacji, jeśli zachodzi potrzeba jego użycia, wybierz go biorąc pod uwagę najważniejsze zapytania. Ewentualnie, dla innych krytycznych wyszukiwań zbuduj indeksy (strategia tylko indeks) bądź perspektywy zmaterializowane. Gdy klauzula WHERE zawiera kilka warunków wskazany indeks o wieloatrybutowym kluczu wyszukiwania. Przy warunkach zakresowych istotna jest kolejność atrybutów w kluczu wyszukiwania. Indeksy takie mogą czasem umożliwić zastosowanie strategii “tylko-indeks” – wtedy pogrupowanie nie ma znaczenia. 14

Przykład 1 SELECT E.Ename, D.Loc FROM Emp E JOIN Dept D ON E.Deptno=D.Deptno WHERE D.Dname='Sales'; Indeks na D.Dname wspomaga selekcję D.Dname='Sales' gdy D jest  tabelą zewnętrzną złączenia. Potrzebny jest indeks albo selektywny albo pogrupowany albo haszowany wewnętrzny. Indeks na E.Deptno wspomaga złączenie (E – tabela wewnętrzna). Powinien być pogrupowany albo haszowany wewnętrzny, ponieważ spodziewamy się wybrania wielu wierszy z E. Perspektywa zmaterializowana, klaster. 16

Przykład 2 SELECT E.Ename, D.Loc FROM Emp E JOIN Dept D ON E.Deptno=D.Deptno WHERE     E.Sal BETWEEN 10000 AND 20000 AND E.Job='SALESMAN'; Ze względu na warunki ograniczające dla tabeli E, wybieramy Emp E jako tabelę zewnętrzną złączenia. Wtedy Dept D będzie tabelą wewnętrzną złączenia. Kolumna D.Deptno jest kluczem głównym, posiada zawsze indeks, który można użyć przy złączaniu. Jaki indeks jest potrzebny na tabeli Emp E? Albo indeks na E.Sal albo na E.Job – wybór zależy od selektywności warunków wyszukiwania - przy złej selektywności potrzebny byłby indeks pogrupowany ewentualnie indeks haszowany wewnętrzny na E.Job. Klaster, perspektywa zmaterializowana. 17

SELECT E. Deptno, COUNT(. ) FROM Emp E WHERE E. Sal>2000 GROUP BY E SELECT E.Deptno, COUNT(*) FROM Emp E WHERE E.Sal>2000 GROUP BY E.Deptno; Przykład 3 Potrzebny jest indeks pogrupowany albo haszowany wewnętrzny na kolumnie E.Deptno. Jeśli nie jest możliwe założenie takiego indeksu, system posortuje względem E.Deptno plik rekordów tabeli Emp E - biorąc pod uwagę tylko rekordy dla których E.Sal>2000. Następnie wykona zliczanie COUNT(*). Byłoby jeszcze lepiej, gdybyśmy dysponowali indeksem drzewowym na kolumnach <Emp.Deptno, Emp.Sal>. Wtedy moglibyśmy wykonać zapytanie przechodząc tylko indeks bez przechodzenia do pliku rekordów – tzn. stosując strategię tylko-indeks. Perspektywa zmaterializowana. 18

Przykład 4 Pewne zapytania, jak ostatnie, można wykonać bezpośrednio przez indeks - bez przechodzenia do pliku rekordów. SELECT E.Deptno, COUNT(*) FROM Emp E GROUP BY E.Deptno; Wystarczy dowolny indeks na E.Deptno, ponieważ nie trzeba przechodzić do pliku rekordów tabeli E.

Podsumowanie Wybór indeksów i perspektyw zmaterializowanych ma istotny wpływ na szybkość wykonywania zapytań. Aktualizacja indeksów i perspektyw zmaterializowanych spowalnia INSERT/DELETE/UPDATE. Wybieraj indeksy, które wspomagają wykonywanie wielu zapytań. Buduj indeksy umożliwiające strategie tylko-indeks. Tylko jeden indeks może być wewnętrzny dla jednej relacji. Kolejność pól w kluczach wielo-atrybutowych może być istotna. Od czasu do czasu trzeba przebudowywać indeksy. Od czasu do czasu trzeba odświeżać statystyki. Sprawdzaj plan wybrany przez optymalizator - ewentualnie zmień indeks, zapis zapytania. Ewentualnie użyj wskazówek do optymalizatora (hint). Unikaj podzapytań, DISTINCT, wyrażeń (może być trudno użyć indeks), GROUP BY, OR, tymczasowych tabel.