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

Podobne dokumenty
Optymalizacja poleceń SQL Indeksy

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

"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

Optymalizacja poleceń SQL

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

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

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

Jakub Pilecki Szymon Wojciechowski

Indeksy. Indeks typu B drzewo

Cwiczenie 4. Połączenia, struktury dodatkowe

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

Optymalizacja poleceń SQL Wprowadzenie

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

Optymalizacja poleceń SQL Statystyki

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

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

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

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

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

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

Indeksowanie w bazach danych

Autor: Joanna Karwowska

Cwiczenie 2. Metody dostępu do danych

Indeksy w hurtowniach danych

Systemy GIS Tworzenie zapytań w bazach danych

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

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

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

Tabela wewnętrzna - definicja

Przestrzenne bazy danych Podstawy języka SQL

Fizyczna struktura bazy danych w SQL Serwerze

Tadeusz Pankowski

Oracle11g: Wprowadzenie do SQL

Przykładowe B+ drzewo

WPROWADZENIE DO BAZ DANYCH

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

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

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

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

Relacyjne bazy danych. Podstawy SQL

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

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

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

Podstawy Informatyki. Metody dostępu do danych

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Wydajność hurtowni danych opartej o Oracle10g Database

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Definicja pliku kratowego

Wykład 4. SQL praca z tabelami 1

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

Model relacyjny. Wykład II

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

Relacyjne bazy danych. Podstawy SQL

Podstawy języka SQL cz. 2

Hurtownie danych - przegląd technologii

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

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

Bazy danych. Andrzej Łachwa, UJ, /15

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

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

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

Wykład 2. Relacyjny model danych

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

Wprowadzenie do baz danych

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

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

Relacyjny model danych

Model relacyjny. Wykład II

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

Bazy danych TERMINOLOGIA

INDEKSY I SORTOWANIE ZEWNĘTRZNE

Ćwiczenie zapytań języka bazy danych PostgreSQL

Wykład XII. optymalizacja w relacyjnych bazach danych

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

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

sprowadza się od razu kilka stron!

Język SQL. Rozdział 2. Proste zapytania

SQL do zaawansowanych analiz danych część 1.

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

Zarządzanie obiektami bazy danych Oracle11g

Hurtownie danych - przegląd technologii

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

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

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

PODSTAWY BAZ DANYCH Wykład Partycjonowanie tabel i indeksów

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

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

Fazy przetwarzania polecenia SQL. Faza parsingu (2) Faza parsingu (1) Optymalizacja poleceń SQL Część 1.

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

PODSTAWY BAZ DANYCH. 10. Partycjonowanie tabel i indeksów. 2009/ Notatki do wykładu "Podstawy baz danych"

Transkrypt:

INDEKSY Biologiczne Aplikacje Baz Danych dr inż. Anna Leśniewska alesniewska@cs.put.poznan.pl

INDEKSY 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ą,

STRUKTURA INDEKSU 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)

ADRES REKORDU 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.

UŻYCIE INDEKSU. 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 adres (adresy) odczytał w kroku 3.

JAKIE ATRYBUTY INDEKSOWAĆ? 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,

PODZIAŁ INDEKSÓW 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.

INDEKS TYPU B-DRZEWO najczęściej stosowany w systemach OLTP (np. systemach obsługi bieżącej), definiowany tylko dla atrybutów o dużej selektywności, struktura: Matysiak węzły wewnętrzne liście drzewa Czyżak Grzybowski Morzy Stefanowski Biały Czyżak Jezierski Matysiak Mizgajski Morzy Waligóra Wożniak Frankowski Grzybowski Pawlak Stefanowski

INDEKS TYPU B-DRZEWO 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,

INDEKS TYPU B-DRZEWO 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); przykład: CREATE INDEX nazwisko_idx ON pracownicy(nazwisko); CREATE INDEX placa_pod_idx ON pracownicy(placa_pod);

INDEKS BITMAPOWY 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,

INDEKS BITMAPOWY 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, przykład: CREATE BITMAP INDEX prac_plec_bmp_idx ON pracownicy (plec);

INDEKS BITMAPOWY 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 AND =

INDEKS ZŁOŻONY 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, przykład: CREATE INDEX nazw_etat_idx ON pracownicy(nazwisko, etat); CREATE INDEX id_prac_etat_placa_idx ON pracownicy(id_prac, etat, placa_pod);

INDEKS ZŁOŻONY 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 I NIEUNIKALNY 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, przykład: 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!

INDEKS FUNKCYJNY 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 przykład: 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);

INDEKS ODWRÓCONY wartości w kluczu indeksowym składowane są w postaci odwróconej, wartość oryginalna wartość składowana stosowane do indeksowania sekwencji, powodują rozproszenie wartości w indeksie, w poleceniu tworzenia indeksu dodatkowa klauzula REVERSE, przykład: 822 228 8222 2228 8223 3228 CREATE INDEX lp_rev_idx ON pracownicy(lp) REVERSE;

BITMAPOWY INDEKS POŁĄCZENIOWY 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-;

BITMAPOWY INDEKS POŁĄCZENIOWY przykład: 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;

BITMAPOWY INDEKS POŁĄCZENIOWY 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

KOMPRESJA INDEKSU 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,

KOMPRESJA INDEKSU 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, przykład: CREATE INDEX prac_idx ON pracownicy(id_zesp, etat) COMPRESS ;

ZARZĄDZANIE INDEKSAMI Usunięcie indeksu: DROP INDEX nazwa_indeksu; Przebudowa indeksu: 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;

SŁOWNIK DANYCH USER_INDEXES USER_IND_COLUMNS informacje o wszystkich indeksach, będących własnością użytkownika (synonim IND) informacje o poindeksowanych atrybutach USER_IND_EXPRESSIONS USER_JOIN_IND_COLUMNS 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;

RELACJA ZORGANIZOWANA JAKO INDEKS (IOT) 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),

RELACJA ZORGANIZOWANA JAKO INDEKS (IOT) 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