Pobierz prezentację
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;
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.