Optymalizacja poleceń SQL Indeksy

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

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.

Indeksy. Indeks typu B drzewo

Jakub Pilecki Szymon Wojciechowski

Cwiczenie 4. Połączenia, struktury dodatkowe

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

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

Optymalizacja poleceń SQL Statystyki

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

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

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

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

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

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

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

Cwiczenie 2. Metody dostępu do danych

Autor: Joanna Karwowska

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

Indeksowanie w bazach danych

Systemy GIS Tworzenie zapytań w bazach danych

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

Indeksy w hurtowniach danych

Fizyczna struktura bazy danych w SQL Serwerze

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

Przestrzenne bazy danych Podstawy języka SQL

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

Tadeusz Pankowski

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

Tabela wewnętrzna - definicja

WPROWADZENIE DO BAZ DANYCH

Oracle11g: Wprowadzenie do SQL

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

Przykładowe B+ drzewo

Relacyjne bazy danych. Podstawy SQL

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

Model relacyjny. Wykład II

Wydajność hurtowni danych opartej o Oracle10g Database

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

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

Hurtownie danych - przegląd technologii

Wykład 4. SQL praca z tabelami 1

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

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

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

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

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

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Relacyjne bazy danych. Podstawy SQL

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

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

Podstawy języka SQL cz. 2

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

Podstawy Informatyki. Metody dostępu do danych

Definicja pliku kratowego

Ćwiczenie zapytań języka bazy danych PostgreSQL

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

Hurtownie danych - przegląd technologii

Wykład 2. Relacyjny model danych

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

Model relacyjny. Wykład II

Język SQL. Rozdział 2. Proste zapytania

Bazy danych Język SQL część 2 Wykład dla studentów matem

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

Wprowadzenie do baz danych

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

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

INDEKSY I SORTOWANIE ZEWNĘTRZNE

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

Wykład XII. optymalizacja w relacyjnych bazach danych

Relacyjny model danych

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

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

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

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

Optymalizacja zapytań. Proces przetwarzania i obliczania wyniku zapytania (wyrażenia algebry relacji) w SZBD

SQL do zaawansowanych analiz danych część 1.

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

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

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

Bazy danych. Andrzej Łachwa, UJ, /15

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Bazy danych TERMINOLOGIA

Ć wiczenie 3. Statystyki, wskazó wki

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

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

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

Transkrypt:

Optymalizacja poleceń SQL Indeksy

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ą. 2

Struktura indeksu Indeks składa się z rekordów. Rekord indeksu 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). 3

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. 4

Użycie indeksu. Użytkownik wykonuje polecenie 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 polecenia. 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. 5

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. 6

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

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 8

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, 9

Indeks typu B-drzewo (cd) 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 (cd) 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); 2

Indeks bitmapowy (cd) Nr_rej Kolor Marka PWG425 czerwony fiat WAW3456 POZ3756 KTW3756 PNR8956 czarny czarny zielony czerwony 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 = 3

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); 4

Indeks złożony (cd) 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 taka sama, pierwszym atrybutem powinien być ten, wg którego wartości danych są fizycznie posortowane. 5

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! 6

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żyjeindeksu 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. Przykład: 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); 7

Indeks odwrócony Wartości w kluczu indeksowym składowane są w postaci odwróconej. wartość oryginalna wartość składowana Stosowany do indeksowania sekwencji, powoduje rozproszenie wartości w indeksie. Zapobiega rywalizacji transakcji o możliwość zapisu tego samego bloku indeksu. W poleceniu tworzenia indeksu dodatkowa klauzula REVERSE. Przykład: 822 228 8222 2228 8223 3228 CREATE INDEX lp_rev_idx ON pracownicy(lp) REVERSE; 8

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 WHEREwarunek_połączeniowy_ ANDwarunek_połączeniowy_2... AND warunek_połączeniowy_n-; 9

Bitmapowy indeks połączeniowy (cd) 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; 2

Bitmapowy indeks połączeniowy (cd) 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. 2

Kompresja indeksu Redukuje zajętości przestrzeni dyskowej przez powtarzające się wartości klucza indeksu. Ograniczenia: tylko dla indeksów typu B-drzewo (indeksy bitmapowe są kompresowane automatycznie), 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, 22

Kompresja indeksu (cd) Domyślnie indeksy są tworzone jako indeksy bez kompresji. Dodatkowa klauzula COMPRESS n, gdzie nto liczba atrybutów w części wiodącej klucza, które mają zostać skompresowane. Przykład: CREATE INDEX prac_idx ON pracownicy(id_zesp, etat, placa_pod) COMPRESS 2; indeks będzie kompresował powtarzające się wartości kolumn id_zespi etat. 23

Zarządzanie indeksami Usunięcie indeksu: DROP INDEX nazwa_indeksu; Przebudowa indeksu: ALTER INDEX nazwa_indeksu REBUILD; Zmiana nazwy indeksu: ALTER INDEX nazwa_indeksu RENAME TO nowa_nazwa; 24

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 informacje o wyrażeniach, na których zbudowano indeksy funkcyjne USER_JOIN_IND_COLUMNS informacje o atrybutach w warunkach połączeniowych dla indeksów połączeniowych SELECT index_name, i.index_type, i.uniqueness, c.column_name FROM user_indexes i JOIN user_ind_columns c USING (index_name) WHERE i.table_name = 'PRACOWNICY' ORDER BY index_name, c.column_position; 25

Relacja zorganizowana jak 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). 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 atrybut]]; Informacje w słowniku: USER_TABLES 27