Indeksy. Rozdział 18. Indeksy. Struktura indeksu. Adres rekordu

Podobne dokumenty
INDEKSY. Biologiczne Aplikacje Baz Danych. dr inż. Anna Leśniewska

Optymalizacja poleceń SQL Indeksy

"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz

Optymalizacja poleceń SQL Metody dostępu do danych

Optymalizacja poleceń SQL

Statystyki (1) Optymalizacja poleceń SQL Część 2. Statystyki (2) Statystyki (3) Informacje, opisujące dane i struktury obiektów bazy danych.

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Optymalizacja poleceń SQL

Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Strojenie poleceń SQL. (c) Instytut Informatyki Politechniki Poznańskiej 221

Strojenie poleceń SQL. (c) Instytut Informatyki Politechniki Poznańskiej 221

Cwiczenie 4. Połączenia, struktury dodatkowe

Indeksy. Indeks typu B drzewo

Jakub Pilecki Szymon Wojciechowski

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Bazy danych - BD. Indeksy. Wykład przygotował: Robert Wrembel. BD wykład 7 (1)

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Optymalizacja poleceń SQL Wprowadzenie

Optymalizacja poleceń SQL Statystyki

Relacyjne bazy danych. Podstawy SQL

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Autor: Joanna Karwowska

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Cwiczenie 2. Metody dostępu do danych

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Rozwiązania wspomagające przetwarzanie wielkich zbiorów danych (VLDB) we współczesnych systemach zarządzania bazami danych

Indeksy w hurtowniach danych

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

Indeksowanie w bazach danych

Rozdział 17. Zarządzanie współbieżnością zadania

Systemy GIS Tworzenie zapytań w bazach danych

Fizyczna struktura bazy danych w SQL Serwerze

Przestrzenne bazy danych Podstawy języka SQL

Systemy OLAP II. Krzysztof Dembczyński. Instytut Informatyki Zakład Inteligentnych Systemów Wspomagania Decyzji Politechnika Poznańska

Przykładowe B+ drzewo

PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych

Tabela wewnętrzna - definicja

Tadeusz Pankowski

Bazy danych 2. Wykład 3. Metodologia projektowania baz danych (projektowanie fizyczne)

060 SQL FIZYCZNA STRUKTURA BAZY DANYCH. Prof. dr hab. Marek Wisła

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Wydajność hurtowni danych opartej o Oracle10g Database

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

Oracle11g: Wprowadzenie do SQL

WPROWADZENIE DO BAZ DANYCH

Ćwiczenie 3 funkcje agregujące

Relacyjne bazy danych. Podstawy SQL

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

Optymalizacja. Plan wykonania polecenia SQL (1) Plan wykonania polecenia SQL (2) Rozdział 19 Wprowadzenie do optymalizacji poleceń SQL

Definicja pliku kratowego

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

Systemy baz danych. mgr inż. Sylwia Glińska

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. zadania

Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1

Model relacyjny. Wykład II

Podstawy języka SQL cz. 2

Podstawy Informatyki. Metody dostępu do danych

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. UŜytkownicy i schematy (2) UŜytkownicy i schematy (1) baza danych: ZESP99

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

PODSTAWY BAZ DANYCH. 7. Metody Implementacji Baz Danych. 2009/ Notatki do wykładu "Podstawy baz danych" 1

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

Indeksy. Schematyczne ujęcie organizacji pamięci i wymiany danych systemu pamiętania.

Wykład 4. SQL praca z tabelami 1

Hurtownie danych - przegląd technologii

Technologia informacyjna

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

INDEKSY I SORTOWANIE ZEWNĘTRZNE

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d.

Język SQL. Rozdział 4. Funkcje grupowe Funkcje grupowe, podział relacji na grupy, klauzule GROUP BY i HAVING.

Model relacyjny. Wykład II

Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki

Bazy danych TERMINOLOGIA

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Ćwiczenie zapytań języka bazy danych PostgreSQL

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Wykład 2. Relacyjny model danych

Ćwiczenie 14 autoryzacja

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

SQL do zaawansowanych analiz danych część 1.

sprowadza się od razu kilka stron!

Relacyjny model danych

Język SQL. Rozdział 2. Proste zapytania

Wprowadzenie do baz danych

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Język SQL. Rozdział 8. Język manipulowania danymi DML

Indeksy. Bazy danych 139

Bazy danych. Andrzej Łachwa, UJ, /15

Wykład XII. optymalizacja w relacyjnych bazach danych

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Transkrypt:

Indeksy Rozdział 8 Indeksy Indeksy B-drzewo i bitmapowe, zwykłe i złoŝone, unikalne i nieunikalne, odwrócone, funkcyjne, skompresowane, bitmapowe połączeniowe. Zarządzanie indeksami. dodatkowe struktury słuŝące przyspieszaniu dostępu do danych, tworzone dla relacji, są jednak niezaleŝne logicznie i fizycznie od danych relacji o uŝyciu indeksu przy realizacji operacji decyduje SZBD są automatycznie pielęgnowane przez bazę danych zalety: przyspieszają odczyt danych (nie zawsze!), wpływają na zwiększenie stopnia współbieŝności wykonywanych w bazie danych operacji, wady: mogą znacznie spowolnić operacje modyfikacji danych, zajmują przestrzeń dyskową, 2 Struktura indeksu Adres rekordu składa się z rekordów, rekord złoŝony jest z dwóch pól: klucz zawiera wartości występujące w atrybutach relacji, na których załoŝono indeks, tzw. atrybutach indeksowych, lub wartości wyraŝeń, zbudowanych z atrybutów relacji, wskaźnik określa blok zawierający rekordy, których wartości atrybutów indeksowych są równe wartościom klucza. W SZBD Oracle wskaźnik jest implementowany w postaci adresu rekordu (ang. rowid) określa dokładną fizyczną lokalizację rekordu w bazie danych, struktura: OOOOOOFFFBBBBBBRRR: OOOOOO numer identyfikacyjny obiektu bazy danych (np. relacji), w której znajduje się rekord, FFF numer pliku bazy danych, BBBBBB numer bloku w pliku, RRR numer rekordu w bloku, odczyt adresu rekordu: SELECT nazwisko, etat, rowid FROM pracownicy; adres rekordu jest niezmienny. 3 4

UŜycie indeksu Jakie atrybuty indeksować?. uŝytkownik wykonuje zapytanie z warunkiem zawierającym poindeksowany atrybut, 2. SZBD szuka w indeksie klucza (zbioru kluczy), którego wartość (wartości) odpowiada wartości poindeksowanego atrybutu w warunku zapytania, 3. SZBD odczytuje adres rekordu (zbiór adresów rekordów) ze znalezionego w kroku 2. klucza (kluczy), 4. SZBD odczytuje rekord (zbiór rekordów), którego adresy (adresy) odczytał w kroku 3. atrybuty często uŝywane w klauzulach WHERE zapytań, atrybuty często uŝywane w warunkach połączeniowych, atrybuty rzadko modyfikowane, atrybuty będące kluczami obcymi relacji, 5 6 Podział indeksów Indeks typu B-drzewo ze względu na strukturę: B-drzewa, bitmapowe, ze względu na liczbę atrybutów indeksowych w kluczu: indeksy zwykłe i indeksy złoŝone, ze względu na unikalność wartości klucza: indeksy unikalne i indeksy nieunikalne, ze względu na kolejność wartości klucza: indeksy zwykłe i indeksy odwrócone, ze względu na sposób składowania: indeksy nieskompresowane i indeksy skompresowane, ze względu na zastosowania: indeksy funkcyjne i bitmapowe indeksy połączeniowe. najczęściej stosowany w systemach OLTP (np. systemach obsługi bieŝącej), definiowany tylko dla atrybutów o duŝej selektywności, struktura: CzyŜak Grzybowski Matysiak Morzy Stefanowski Biały CzyŜak Jezierski Matysiak Mizgajski Morzy Waligóra WoŜniak Frankowski Grzybowski węzły wewnętrzne Pawlak Stefanowski liście drzewa 7 8

Indeks typu B-drzewo (cd) Indeks typu B-drzewo (cd) cechy: z kluczem indeksowym przechowywana lista adresów rekordów, w których wartości atrybutów indeksowych są równe wartości klucza, wielkość indeksu słabo zaleŝna od rozmiaru dziedziny atrybutu indeksowego, efektywne wykonywanie operacji: koniunkcji, zapytań równościowych i przedziałowych, sortowania, testowania unikalności atrybutu, wyliczania wartości minimalnej i maksymalnej, grupowania, eliminacji powtórzeń, wysoka współbieŝność modyfikacji, niski koszt pojedynczej modyfikacji, wysoki koszt modyfikacji grupy rekordów, rozmiar indeksu moŝe znacznie przewyŝszać rozmiar danych relacji, cechy (cd): nie przechowuje informacji o wartościach pustych, dla relacji połączonych kluczem obcym eliminuje konieczność blokady relacji podrzędnej (tej, w której zdefiniowano klucz) w przypadku usuwania lub modyfikacji rekordów relacji nadrzędnej (tej, na którą wskazuje klucz), składnia polecenia: CREATE INDEX nazwa ON relacja(atrybut); CREATE INDEX nazwisko_idx ON pracownicy(nazwisko); CREATE INDEX placa_pod_idx ON pracownicy(placa_pod); 9 Indeks bitmapowy Indeks bitmapowy (cd) stosowany najczęściej w systemach OLAP (np. hurtowniach danych), definiowany tylko dla atrybutów o małej selektywności, atrybuty kandydujące: liczba róŝnych wartości atrybutu powinna być mniejsza niŝ % liczby rekordów w relacji, lub wartości atrybutu powtarzają się ponad razy w relacji. cechy: z kluczem przechowywana bitmapa, której pozycje odpowiadają adresom rekordów o wartościach atrybutów indeksowych równych wartości klucza, konwersja pozycji bitmapy na adres rekordu realizowana przez funkcję mapującą, stosowane w zapytaniach z warunkami z operatorem = wielkość indeksu silnie zaleŝna od rozmiaru dziedziny atrybutu indeksowego, cechy (cd.): efektywne wykonywanie operacji koniunkcji, alternatywy i negacji, wykorzystywany w zapytaniach z poszukiwaniem wartości pustych, niska współbieŝność modyfikacji konieczność blokady całej mapy bitowej, wysoki koszt pojedynczej modyfikacji, niski koszt modyfikacji grupy rekordów, rozmiar indeksu jest najczęściej ułamkiem rozmiaru danych relacji, w poleceniu tworzenia indeksu dodatkowa klauzula BITMAP, CREATE BITMAP INDEX prac_plec_bmp_idx ON pracownicy (plec); 2

Indeks bitmapowy (cd) Indeks złoŝony Nr_rej Kolor Marka PWG425 WAW3456 POZ3756 KTW3756 PNR8956 czerwony czarny czarny zielony czerwony fiat fiat BMW VW BMW CREATE BITMAP INDEX marka_bmp_idx ON samochody (marka); CREATE BITMAP INDEX kolor_bmp_idx ON samochody(kolor); SELECT COUNT(*) FROM samochody WHERE kolor IN ('czerwony', zielony') AND marka = 'fiat ; OR czerwony czarny zielony fiat BMW VW AND = klucz indeksu zawiera więcej niŝ jeden atrybut relacji, maksymalnie 32 atrybuty w kluczu indeksu (3 dla indeksu bitmapowego), dla indeksu załoŝonego na atrybutach ABC kombinacje atrybutów: A, AB i ABC to tzw. części wiodące klucza, w przeciwieństwie do kombinacji B, BC oraz C, CREATE INDEX nazw_etat_idx ON pracownicy(nazwisko, etat); CREATE INDEX id_prac_etat_placa_idx ON pracownicy(id_prac, etat, placa_pod); 3 4 Indeks złoŝony (cd) Indeks unikalny i nieunikalny kiedy zakładać indeks złoŝony: na atrybutach często występujących razem w klauzuli WHERE zapytań na atrybutach często odczytywanych wspólnie przez wiele zapytań, jak wybrać kolejność atrybutów w kluczu: atrybuty wykorzystywane w klauzuli WHERE powinny stanowić część wiodącą klucza, atrybuty wykorzystywane częściej w klauzuli WHERE powinny stanowić część wiodącą klucza, jeśli częstotliwość atrybutów jest ta sama, pierwszym atrybutem powinien być ten, wg którego wartości danych są fizycznie posortowane. indeks unikalny gwarantuje, Ŝe w relacji nie będzie dwóch rekordów z tą samą wartością atrybutu indeksowego (atrybutów indeksowych w przypadku indeksu złoŝonego), w przeciwieństwie do indeksu nieunikalnego, w SZBD Oracle indeksy unikalne są tworzone automatycznie przy definiowaniu ograniczeń integralnościowych typu klucz podstawowy i klucz unikalny, w poleceniu tworzenia indeksu dodatkowa klauzula UNIQUE, CREATE UNIQUE INDEX id_prac_idx ON pracownicy(id_prac); CREATE UNIQUE INDEX id_zesp_idx ON zespoly(id_zesp); Uwaga! Nie moŝna utworzyć unikalnego indeksu bitmapowego! 5 6

Indeks funkcyjny Indeks odwrócony definiowany dla atrybutów, które w zapytaniach często uŝywane są jako parametry funkcji (np. upper(nazwisko)) bądź elementy wyraŝeń (np. placa_pod *.2), moŝe być zaimplementowany jako indeks B-drzewo lub indeks bitmapowy, SZBD nie uŝyje indeksu niefunkcyjnego, załoŝonego na atrybucie A, gdy w zapytaniu A jest parametrem funkcji lub elementem wyraŝenia, indeksowane wyraŝenie nie moŝe zawierać funkcji agregujących, SELECT * FROM pracownicy WHERE UPPER(nazwisko) = NOWAK AND placa_dod*2 = placa_pod; CREATE INDEX nazw_idx_fun ON pracownicy(upper(nazwisko)); CREATE INDEX placa_dod_idx_fun ON pracownicy(placa_dod*2); wartości w kluczu indeksowym składowane są w postaci odwróconej, wartość oryginalna 822 8222 8223 wartość składowana 228 2228 3228 stosowane do indeksowania sekwencji, powodują rozproszenie wartości w indeksie, w poleceniu tworzenia indeksu dodatkowa klauzula REVERSE, CREATE INDEX lp_rev_idx ON pracownicy(lp) REVERSE; 7 8 Bitmapowy indeks połączeniowy Bitmapowy indeks połączeniowy (cd) indeks definiowany dla operacji równościowego połączenia dwóch lub więcej relacji, dla kaŝdej wartości atrybutu indeksowego relacji składowane są adresy rekordów drugiej relacji, które mają tą samą wartość atrybutu połączeniowego, wykorzystywany przy zapytaniach łączących relacje, składnia: CREATE BITMAP INDEX nazwa ON relacja (lista_atrybutów) FROM relacja_, relacja_2,..., relacja_n WHERE warunek_połączeniowy_ AND warunek_połączeniowy_2... AND warunek_połączeniowy_n-; OSOBY # pesel * imię * nazwisko * id_miasta relacje wymiaru MIASTA # id_miasta * nazwa_miasta * id_woj WOJEWÓDZTWA # id_woj * nazwa_woj SELECT COUNT(*) FROM osoby NATURAL JOIN miasta NATURAL JOIN województwa WHERE nazwa_woj = Wielkopolskie ; CREATE BITMAP INDEX os_mi_woj_bmp_idx ON osoby(nazwa_woj) FROM osoby o, miasta m, województwa w WHERE o.id_miasta = m.id_miasta AND m.id_woj = w.id_woj; 9 2

Bitmapowy indeks połączeniowy (cd) Kompresja indeksu ograniczenia: relacja nie moŝe pojawiać się wielokrotnie w złączeniu, przy tworzeniu indeksu w definicji połączenia nie moŝna uŝywać składni ANSI, poindeksowane atrybuty muszą być atrybutami relacji wymiarów, atrybuty relacji wymiarów, umieszczone w warunku połączeniowym, muszą mieć zdefiniowane ograniczenia typu klucz podstawowy lub klucz unikalny redukuje zajętości przestrzeni dyskowej przez powtarzające się wartości klucza indeksu, ograniczenia: tylko dla indeksów typu B-drzewo, dla indeksów nieunikalnych wszystkie atrybuty klucza mogą zostać skompresowane, dla indeksów unikalnych przynajmniej jeden z atrybutów klucza musi pozostać nieskompresowany, zalety: duŝa oszczędność przestrzeni dyskowej większa liczba kluczy indeksu składowana w bloku, zwiększenie wydajności operacji we/wy z uŝyciem indeksu, wady: większe zuŝycie CPU w celu dekompresji kluczy przy przeglądaniu indeksu, 2 22 Kompresja indeksu (cd) Zarządzanie indeksami domyślnie indeksy są tworzone jako indeksy bez kompresji, dodatkowa klauzula COMPRESS n, gdzie n to liczba atrybutów w kluczu, które mają zostać skompresowane, Usunięcie indeksu: DROP INDEX nazwa_indeksu; Przebudowa indeksu: CREATE INDEX prac_idx ON pracownicy(id_zesp, etat) COMPRESS ; ALTER INDEX nazwa_indeksu REBUILD; Wyliczenie statystyk dla indeksu: CREATE INDEX... COMPUTE STATISTICS; ALTER INDEX nazwa_indeksu COMPUTE STATISTICS; Zmiana nazwy indeksu: ALTER INDEX nazwa_indeksu RENAME TO nowa_nazwa; 23 24

Słownik danych Relacja zorganizowana jak indeks (IOT) USER_INDEXES USER_IND_COLUMNS USER_IND_EXPRESSIONS USER_JOIN_IND_COLUMNS informacje o wszystkich indeksach, będących własnością uŝytkownika (synonim IND) informacje o poindeksowanych atrybutach informacje o wyraŝeniach, na których zbudowano indeksy funkcyjne informacje o atrybutach w warunkach połączeniowych dla indeksów połączeniowych SELECT i.index_name, i.index_type, i.uniqueness, c.column_name FROM user_indexes i, user_ind_columns c WHERE i.table_name = 'PRACOWNICY AND i.index_name = c.index_name ORDER BY i.index_name, c.column_position; dane relacji przechowywane w strukturze B-drzewa, uporządkowanie danych w drzewie wg wartości atrybutów klucza podstawowego relacji, rekord jest identyfikowany przez wartość klucza podstawowego a nie przez adres rekordu (ROWID), w liściu B-drzewa znajduje się cały rekord relacji, dla relacji o duŝym rozmiarze rekordu moŝna zdefiniować dodatkowe miejsce składowania, tzw. obszar przepełnienia, poza liśćmi B-drzewa dla atrybutów niekluczowych, zalety: szybszy dostęp do danych w zapytaniach z warunkiem zbudowanym z atrybutów klucza podstawowego, brak konieczności zakładania indeksów na atrybutach klucza podstawowego oszczędność przestrzeni dyskowej, na atrybutach niekluczowych moŝna zdefiniować dodatkowe indeksy (dzięki istnieniu logicznego ROWID), 25 26 Relacja zorganizowana jak indeks (IOT) (cd) ograniczenia: IOT musi mieć zdefiniowany klucz podstawowy, polecenie modyfikacji wartości klucza podstawowego relacji moŝe wymagać przebudowy całej struktury, składnia polecenia: CREATE TABLE nazwa ( definicja atrybutów definicja ograniczeń integralnościowych) ORGANIZATION INDEX [PCTTHRESHOLD procent] [OVERFLOW TABLESPACE przestrzeń tabel [INCLUDING lista atrybutów]]; informacje w słowniku: USER_TABLES 27