Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Indeksy w bazie danych Oracle Autor: Michał Krzyżanowski.

Podobne prezentacje


Prezentacja na temat: "Indeksy w bazie danych Oracle Autor: Michał Krzyżanowski."— Zapis prezentacji:

1 Indeksy w bazie danych Oracle Autor: Michał Krzyżanowski

2 Co to jest indeks? Jest to struktura powiązana z tabelą lub klastrem umożliwiająca szybsze wykonywanie zapytań SQL Posiada strukturę logiczną i fizyczną niezależną od tabeli do jakiej się odwołuje Posiada własną przestrzeń dyskową Jest automatycznie utrzymywany przez system zarządzania bazą danych

3 Po co nam indeksy? Przyspieszają dostęp do danych Tworzone dla relacji Zalety: przyspieszają odczyt danych wpływają na stopień współbieżności wykonywanych operacji Wady: mogą znacznie spowolnić modyfikację danych zajmują przestrzeń dyskową

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

5 Indeksy typu b-drzewo: Wykorzystywany dla atrybutów o dużej selektywności Wielkość indeksu słabo zależna od rozmiaru dziedziny indeksowanego atrybutu Nie przechowuje informacji o wartościach nullowych CREATE INDEX nazwa_indeksu ON tabela(kolumna);

6 Indeksy bitmapowe: Wykorzystywane dla atrybutów o małej selektywności, np. płeć Przechowuje wartości nullowe Rozmiar indeksu ściśle zależny od rozmiaru dziedziny atrybutu indeksu Nie można zakładać globalnych indeksów bitmapowych na partycjonowanych tabelach CREATE BITMAP INDEX nazwa_indeksu ON tabela (kolumna);

7 Indeksy złożone: Składają się z większej niż jedna ilości kolumn Stosuje się je gdy w zapytaniach występuje kilka kolumn w w warunku WHERE Powinno się stosować kolejność kolumn według częstotliwości ich występowania w zapytaniach CREATE INDEX nazwa_indeksu ON tabela (kolumna1, kolumna2, kolumna3);

8 Indeks unikalny: Tworzony, żeby zapewnić unikalność wartości indeksowanej kolumnie lub kolumnach. Nie można jednocześnie stworzyć indeksu unikalnego i bitmapowego. CREATE UNIXUE INDEX nazwa_indeksu ON tabela (kolumna);

9 Indeksy odwrócone Wartość w indeksie jest przechowywana w odwrotny sposób niż wartość przechowywana w atrybutach, np. wartość ORACLE będzie przechowywana jako ELCARO Stosowane do indeksowania sekwencji Powodują rozproszenie wartości w indeksie CREATE INDEX nazwa_indeksu ON tabela (kolumna) REVERSE;

10 Indeksy skompresowane: Redukuje zajmowaną przestrzeń dyskową poprzez powtarzające się wartości klucza indeksu Zwiększa zyżycie procesora przy przeglądaniu wartości indeksu Dostępne tylko dla indeksów typu B-drzewo CREATE INDEX nazwa_indeksu ON tabela(kolumna) COMPRESS 1;

11 Indeksy funkcyjne: Indeks przechowuje wartość funkcji lub wyrażenia zamiast wartości kolumny Wykorzystywany dla atrybutów, które w zapytaniach są często argumentami funkcji Indeksowane wyrażenie nie może zawierać funkcji agregujących CREATE INDEX nazwa_indeksu ON tabela (UPPER(kolumna));

12 Bitmapowe indeksy połączeniowe Jest tworzony przy złączaniu tabel Możliwe jest zastosowanie klauzuli WHERE przy tworzeniu indeksu CREATE BITMAP INDEX nazwa ON relacja (lista_atrybutów) FROM relacja_1, relacja_2,..., relacja_n WHERE warunek_połączeniowy_1 AND warunek_połączeniowy_2... AND warunek_połączeniowy_n-1;

13 Kryteria wyboru indeksów Dane nie powinny być często modyfikowane Atrybuty często występujące w zapytaniach WHERE Atrybuty używane w warunkach złączeniowych Indeksu powinien znajdować się na innym dysku niż tabela źródłowa

14 Zarządzanie indeksami: Tworzenie indeksów Przebudowywanie indeksów Monitorowanie indeksów Usuwanie indeksów Zmiana nazwy indeksu

15 Przebudowa indeksów: ALTER INDEX nazwa_indeksu REBUILD; ALTER INDEX emp_name REBUILD ONLINE; - opcja ONLINE pozwala na modyfikację danych w tabeli źródłowej indeksu podczas jego przebudowy

16 Monitorowanie indeksu: CREATE INDEX nazwa_indeksu COMPUTE STATISTICS; ALTER INDEX nazwa_indeksu COMPUTE STATISTICS; ALTER INDEX index MONITORING USAGE; - włączanie monitoringu użycia indeksu ALTER INDEX index NOMONITORING USAGE; - wyłączanie monitoringu użycia indeksu

17 Usuwanie indeksów: DROP INDEX nazwa_indeksu; Nie można usunąć indeksu będącego jednocześnie kluczem unikalnym lub kluczem głównym tabeli. Należy wcześniej wyłączyć lub usunąć te constrainty.

18 Zmiana nazwy indeksu: ALTER INDEX nazwa_indeksu RENAME TO nowa_nazwa;

19 Widoki zawierające informacje o indeksach: DBA_INDEXES, ALL_INDEXES, USER_INDEXES - opisują indeksy w bazie danych; DBA_IND_COLUMNS, ALL_IND_COLUMNS, USER_IND_COLUMNS – przechowują informacje o indeksowanych kolumnach; DBA_IND_EXPRESSIONS, ALL_IND_EXPRESSIONS, USER_IND_EXPRESSIONS – opisują wyrażenia używane przez indeksy funkcyjne; DBA_IND_STATISTICS, ALL_IND_STATISTICS, USER_IND_STATISTICS – zawierają statystyki optymalizatora dotyczące indeksów.

20 Tabele oparte na indeksach: Dane są przechowywane w strukturze B- drzewa Oracle nie buduje tabeli tylko przechowywuje wszystkie wymagane informacje w postaci indeksu

21 Tworzenie tabeli: CREATE TABLE emp_iot ( emp_id number, ename varchar2(20), sal number(9,2), deptno number, CONSTRAINT pk_emp_iot_index PRIMARY KEY (emp_id) ) ORGANIZATION index;


Pobierz ppt "Indeksy w bazie danych Oracle Autor: Michał Krzyżanowski."

Podobne prezentacje


Reklamy Google