Indeksy. Indeks typu B drzewo

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

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

PODSTAWY BAZ DANYCH 13. PL/SQL

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

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

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL

Oracle PL/SQL. Paweł Rajba.

Zaawansowane bazy danych i hurtownie danych semestr I

PL/SQL. Zaawansowane tematy PL/SQL

Przestrzenne bazy danych Podstawy języka SQL

Optymalizacja poleceń SQL Indeksy

Język PL/SQL Procedury i funkcje składowane

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

SQL :: Data Definition Language

Październik Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż.

Bloki anonimowe w PL/SQL

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Procedury i funkcje składowane

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Pakiety podprogramów Dynamiczny SQL

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

15. Funkcje i procedury składowane PL/SQL

SQL 4 Structured Query Lenguage

BAZA DANYCH SIECI HOTELI

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

P o d s t a w y j ę z y k a S Q L

Optymalizacja poleceń SQL Metody dostępu do danych

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL;

Oracle11g: Wprowadzenie do SQL

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

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

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Bazy danych, 4. wiczenia

Wyzwalacze TWORZENIE WYZWALACZY

Zaawansowane bazy danych i hurtownie danych semestr I

Cele. Definiowanie wyzwalaczy

Oracle PL/SQL. Paweł Rajba.

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

Plan wykładu BAZY DANYCH II WYKŁAD 5. Kolekcje. Tablice asocjacyjne Kolekcje Tablice asocjacyjne VARRAY Tablice zagnieżdżone

Hurtownia Świętego Mikołaja projekt bazy danych

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Składowane procedury i funkcje

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

Tworzenie raportów XML Publisher przy użyciu Data Templates

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Deklarowanie kursora

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

Bazy danych 6. Klucze obce. P. F. Góra

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...

Wprowadzenie do języka SQL

Plan wykładu BAZY DANYCH II WYKŁAD 4. Co to jest kursor? Rodzaje kursorów

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

Bloki anonimowe w PL/SQL

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

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

Oracle PL/SQL. Paweł Rajba.

1. Wyzwalacze BD (ang. triggers)

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Oracle PL/SQL. Paweł Rajba.

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

Technologie baz danych WYKŁAD 7: Wyjątki

Indeksowanie w bazach danych

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

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Język PL/SQL. Rozdział 2. Kursory

PL/SQL. Lidia Małkiewicz i Cezary Skubała

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Język SQL. Rozdział 2. Proste zapytania

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

Systemy GIS Tworzenie zapytań w bazach danych

Relacyjne bazy danych. Podstawy SQL

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

Język SQL, zajęcia nr 1

Kursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Aspekty aktywne baz danych

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

Podprogramy. Rozdział 11 Procedury i funkcje składowane

Język PL/SQL. Rozdział 4. Procedury i funkcje składowane

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Transkrypt:

Indeksy dodatkowe struktury służące przyśpieszeniu dostępu do danych o użyciu indeksu podczas realizacji poleceń decyduje SZBD niektóre systemy bazodanowe automatycznie tworzą indeksy dla kolumn o wartościach unikatowych zalety i wady Struktura indeksu składa się z rekordów o dwóch polach klucz - zawiera wartości występujące w atrybutach relacji, na których założono indeks wskaźnik określa blok zawierający rekordy, których wartości atrybutów indeksowych są równe wartościom klucza Podział indeksów ze względu na strukturę B-drzewa, bitmapowe liczbę atrybutów indeksowych w kluczu - indeksy proste, złożone zastosowanie funkcyjne, bitmapowe, bitmapowe połączeniowe Indeks typu B drzewo definiowany tylko dla atrybutów o dużej selektywności z kluczem indeksowym przechowywana lista adresów rekordów wysoka współbieżność modyfikacji niski koszt pojedynczej modyfikacji, wysoki koszt modyfikacji grupy rekordów rozmiar indeksu może znacznie przewyższać rozmiar podstawowej relacji Indeks bitmapowy Ideą indeksów bitmapowych jest wykorzystanie pojedynczych bitów do zapamiętania informacji o tym, że dana wartość atrybutu występuje w określonym rekordzie tabeli. Dla każdej unikalnej wartości atrybutu jest przechowywana tablica bitów, zwana mapą bitową. stosowany najczęściej w systemach OLAP, hurtowniach danych definiowany tylko dla atrybutów o małej selektywności ( liczba różnych wartości atrybutu powinna być mniejsza niż1% liczby rekordów w relacji ) rozmiar indeksu jest niewielki nawet dla bardzo dużych relacji wysoki koszt pojedynczej modyfikacji, niski koszt modyfikacji grupy rekordów możliwość odwzorowania operatorów AND, OR, NOT z zapytania Indeks złożony klucz indeksu zawiera więcej niż jeden atrybut relacji stosowane gdy w poleceniach występuje kilka atrybutów w klauzuli WHERE zaleca się dobranie właściwej kolejności atrybutów stanowiących klucz indeksowy 1

składnia: Bitmapowy indeks połączeniowy Łączy w sobie koncepcję indeksu połączeniowego i bitmapowgo. Implementacyjnie, bitmapowy indeks połączeniowy posiada strukturę B_drzewa w którego liściach znajdują się mapy bitowe opisujące łączone rekordy wg benchmarków Oracle, bitmapowy indeks połączeniowy może być nawet 8-krotnie szybszy od tradycyjnych metod indeksowania z bitmapowego indeksu połączeniowego mogą korzystać tylko te zapytania, które w klauzuli WHERE nie odwołują się do kolumn nie objętych indeksem ze względu na bardzo niską efektywność operacji DML, w praktyce indeksy takie usuwa się przed ładowaniem hurtowni danych, a następnie tworzy się je ponownie. CREATE [ UNIQUE BITMAP ] INDEX <Nazwa_indeksu> ON <Nazwa_tabeli> ( <wyrażenie_indeksowe> ) [ COMPRESS ] [ REVERSE ] ; DROP INDEX <Nazwa_indeksu> ; ALTER INDEX <Nazwa_indeksu>... ; przykłady: CREATE INDEX Ind_pra ON Pracownicy (Upper( Nazwisko ) ) ; CREATE UNIQUE INDEX Ind_dzial ON Dzialy ( Nazwa ) ; CREATE BITMAP INDEX Ind_pl ON Studenci ( Plec ) ; CREATE BITMAP INDEX Ind_sprz ON Sprzedaz ( p.nazwa, k.miasto ) FROM Sprzedaz s, Sklepy k, Produkty p WHERE s.id_sklepu = k.id_sklepu AND s.id_produktu = p.id_produktu ; Strategia indeksowania indeksy zajmują miejsce i wymagają aktualizacji niektóre systemy bazodanowe automatycznie tworzą indeksy dla kolumn o wartościach unikatowych najczęściej stosuje się indeksy proste ( klucz indeksowy jedna kolumna ) indeksy o strukturze B-drzewa zaleca się tworzyć dla: kolumn zawierających mało duplikatów zapytań wybierających mały podzbiór wierszy tabeli kolumn często wykorzystywanych w warunkach selekcji kolumn pełniących rolę kluczy głównych 2

o indeksy bitmapowe mogą być alternatywą dla tradycyjnych indeksów gdy tabele są bardzo duże (miliony wierszy ) kolumny zawierają wartości często powtarzające się ( płeć, wykształcenie ) o indeksy z odwróconym kluczem stosujemy dla kolumny, której wartości wzrastają szeregowo, a przy tym wiele równoczesnych transakcji wykonuje operacje DML na tej kolumnie LICZNIKI - SEKWENCJE - kto z nich korzysta i w jakich okolicznościach? składnia: CREATE SEQUENCE <Nazwa_sekwencji> [ INCREMENT BY <wartość_liczbowa_co_ile> ] [ START WITH <wartosc_liczbowa_start _od> ] ; <Nazwa_sekwencji>.NEXTVAL - wygenerowanie następnej wartości <Nazwa_sekwencji>.CURRVAL - pobranie aktualnej wartości przykłady: CREATE SEQUENCE Numeruj INCREMENT BY 5 START WITH 50 ; INSERT INTO Dzialy VALUES (Numeruj.nextval, LOGISTYKA, POZNAŃ ) ; ALTER SEQUENCE Numeruj INCREMENT BY 10 ; INSERT INTO Czytelnicy VALUES ( Numeruj.nextval, Nowacki, Adam, Student, Myszków ul. Mała 5 ) ; DROP SEQUENCE Numeruj ; Inne obiekty bazy danych tworzone w PL/SQL 3

PL/SQL (ang. Procedural Language/Structured Query Language) Proceduralne rozszerzenie języka SQL do pisania aplikacji w Oracle język proceduralny; kompilowany wykorzystuje typowe konstrukcje programistyczne; pętle, decyzje ma strukturę blokową każda instrukcja bloku PL/SQL jest zakończona średnikiem /* przykładowy kod źródłowy funkcji */ CREATE OR REPLACE FUNCTION Dwa_imiona ( p_nr_albumu IN Studenci.Nr_albumu%TYPE ) RETURN BOOLEAN AS v_robo NUMBER:=0; SELECT instr(imiona,',') INTO v_robo FROM Studenci WHERE Nr_albumu = p_nr_albumu; IF v_robo <> 0 THEN RETURN FALSE; ELSE RETURN TRUE; END IF; END Dwa_imiona; /* przykładowy kod źródłowy procedury */ CREATE OR REPLACE PROCEDURE Losowanie ( Ilu NUMBER, p_rodzaj_studiow VARCHAR2 ) IS CURSOR Bufor ( p_rodzaj_studiow VARCHAR2) IS SELECT Nr_albumu, Nazwisko, Imiona FROM Studenci WHERE Rodzaj_studiow = p_rodzaj_studiow ORDER BY DBMS_RANDOM.value() ; TYPE T_rec IS RECORD ( Nr_albumu VARCHAR2(10), Nazwisko VARCHAR2(40), Imiona VARCHAR2(30)); Robo T_rec; DELETE FROM Wyniki ; OPEN Bufor( p_rodzaj_studiow) ; LOOP FETCH Bufor INTO Robo ; EXIT WHEN (Bufor%ROWCOUNT >Ilu ) OR ( Bufor%NOTFOUND ) ; INSERT INTO Wyniki VALUES( Robo.Nr_albumu, Robo.Nazwisko, Robo.Imiona ) ; END LOOP ; CLOSE Bufor ; END Losowanie ; 4

/* przykładowy kod źródłowy wyzwalacza */ CREATE OR REPLACE TRIGGER Kontrola_plac BEFORE INSERT ON Pracownicy FOR EACH ROW DECLARE V_min NUMBER; V_max NUMBER; SELECT placa_min, placa_max INTO V_min, V_max FROM Stanowiska WHERE stanowisko=:new.stanowisko; IF :new.placa NOT BETWEEN V_min AND V_max THEN RAISE_APPLICATION_ERROR( -20001,' Wynagrodzenie niezgodne z stanowiskiem'); END IF; END;