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



Podobne dokumenty
przykłady problemów; realizacja dostaw części od producenta do klienta:

Indeksy. Indeks typu B drzewo

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

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

Plan ćwiczenia. Rozdział 17. zarządzania współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Bazy danych. Andrzej Łachwa, UJ, /15

Plan ćwiczenia. Rozdział 17 Zarządzanie współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Bazy danych 9. SQL Klucze obce Transakcje

Bazy danych wykład dziewiaty Transakcje. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Oracle PL/SQL. Paweł Rajba.

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

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

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

Uprawnienia, role, synonimy

PODSTAWY BAZ DANYCH 13. PL/SQL

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Składowane procedury i funkcje

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

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Transakcje jednocześnie ACID

Bazy danych. Dr inż. Paweł Kasprowski

Właściwości transakcji

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

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

Bazy danych 9. Klucze obce Transakcje

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

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

Bazy danych 2. Wykład 6 Transakcje

Oracle PL/SQL. Paweł Rajba.

Wykład 8. SQL praca z tabelami 5

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

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

Bazy danych - Materiały do laboratoriów VIII

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

070 TRANSAKCJE. Prof. dr hab. Marek Wisła

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Ćwiczenie 9 współbieŝność

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

SQL 4 Structured Query Lenguage

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

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań,

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

Izolacje transakcji oraz anomalie. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

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

Oracle11g: Wprowadzenie do SQL

Pakiety podprogramów Dynamiczny SQL

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

1. Wyzwalacze BD (ang. triggers)

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

Przestrzenne bazy danych Podstawy języka SQL

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Zaawansowane bazy danych i hurtownie danych semestr I

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

Tworzenie u ytkownika. ORACLE (Wykład 6) Uwierzytelnianie u ytkowników. Przył czenie u ytkownika do bazy. Nadawanie uprawnie systemowych

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Wielowersyjne metody synchronizacji transakcji

Zarządzanie obiektami bazy danych Oracle11g

CREATE USER

Bloki anonimowe w PL/SQL

BAZA DANYCH SIECI HOTELI

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

SQL :: Data Definition Language

Bazy danych 7. Klucze obce Transakcje. P. F. Góra

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

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

SQL> startup pfile=./admin/pfile/initdbx.ora. SQL> create spfile from pfile='$home/admin/pfile/initdbx.ora' create user bolek identified by bolek;

Hurtownia Świętego Mikołaja projekt bazy danych

Internetowe bazy danych

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

Tadeusz Pankowski

Plan wykładu. Przykład. Wprowadzenie BAZY DANYCH. Transakcje Hurtownie danych

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

BAZY DANYCH Cz III. Transakcje, Triggery

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

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

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

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

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

Wyzwalacze (triggery) Przykład

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

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

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

PL/SQL. Zaawansowane tematy PL/SQL

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

Wyzwalacze TWORZENIE WYZWALACZY

Autor: Joanna Karwowska

Baza danych inside. Biologiczne Aplikacje Baz Danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Bazy danych i usługi sieciowe

Zarządzanie kontami użytkowników w i uprawnieniami

Przechowywanie danych

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

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 składnia tworzenia usunięcia modyfikacji 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 ; 1

Strategia indeksowania indeksy zajmują miejsce i wymagają aktualizacji 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 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 ) Inne obiekty bazy danych tworzone w PL/SQL 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; BEGIN 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; 2

/* 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; BEGIN 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; TRANSAKCJE zestaw operacji pod szczególną kontrolą pojęcie transakcji jest podstawą wszelkich mechanizmów odpowiedzialnych za niezawodne działanie systemu z wieloma użytkownikami transakcja to sekwencja operacji, która musi zakończyć się sukcesem w całości - w przeciwnym wypadku musi powrócić stan początkowy (wyjściowy ) przykłady transakcji: operacja przelewu kwoty X z konta A na konto B rezerwacja biletów lotniczych z uwzględnieniem połączeń sprzedaż internetowa Transakcja jest zdarzeniem lub sekwencją zdarzeń, w wyniku których baza danych przechodzi od jednego spójnego stanu do następnego. W przypadku niepowodzenia dowolnego ze zdarzeń lub nie zakończenia sekwencji system powraca do stanu początkowego. Zakończenie transakcji gwarantuje zachowanie spójnego stanu bazy danych, aż do jego zmiany w wyniku kolejnej transakcji. ( Integralność danych ) Jest to grupa operacji w bazie danych, które jako całość charakteryzuje się zbiorem gwarantowanych właściwości- znanych jako ACID niepodzielność ( z ang. Atomicity ) - wykonują się wszystkie operacje, albo żadna spójność ( z ang. Consistency ) - wszystkie operacje składające się na transakcję działają na spójnym zbiorze danych, a po jej zakończeniu baza danych pozostaje w spójnym stanie izolacyjność ( z ang. Isolation ) - transakcja nie wie nic o innych transakcjach i nie musi uwzględniać ich działania trwałość ( z ang. Durability ) - po zatwierdzeniu transakcji zmiany dokonane w jej wyniku są trwałe, nawet w przypadku awarii systemu 3

Użytkownik realizuje swoje transakcje poprzez polecenia języka SQL kierowane bezpośrednio, pośrednio przy użyciu wcześniej przygotowanych aplikacji bazodanowych. Rozpoczęcie transakcji niejawne: pierwsza poprawna instrukcja w sesji użytkownika koniec poprzedniej transakcji jawne: w niektórych systemach bazodanowych polecenie BEGIN TRANSACTION lub START TRANSACTION Zakończenie transakcji jawne: polecenie COMMIT zatwierdzenie zmian polecenie ROLLBACK wycofanie zmian niejawne: poprawne zamknięcie sesji użytkownika ( wylogowanie ) - zatwierdzenie zmian polecenia z grupy DDL lub DCL zatwierdzenie zmian awaria systemu wycofanie zmian Współbieżność - równoczesny dostęp wielu transakcji do jednych i tych samych danych Anomalie współbieżnego dostępu: brudne odczyty ( ang. dirty read ) gdy transakcja odczytuje dane, zmienione przez inną transakcję, która potem zostaje wycofana. ( Pierwsza transakcja odczytała dane, które już nie istnieją ). utracona modyfikacja ( ang. lost update ) - dwie transakcje równolegle przystępują do aktualizacji tych samych danych i zmiany, wprowadzone przez jedną transakcji, zostają nadpisane przez zmiany z drugiej transakcji. niepowtarzalne odczyty ( ang. nonrepeatable read/fuzzy read) wynik tego samego zapytania wykonywanego kilka razy w tej samej transakcji za każdym razem jest inny; jest to rezultat zmian wprowadzonych przez drugą transakcję w czasie działania pierwszej. fantomy ( ang. phantom read ) dotyczy zmian zachodzących w innych transakcjach, które powodują, że klauzulę WHERE transakcji zaczynają spełniać nowe wiersze. ( Dzieje się tak dlatego, że równolegle inna transakcja wstawia nowe rekordy czy też modyfikuje istniejące w ten sposób, że zbiór odpowiedzi, spełniających kryteria zapytania pierwszej transakcji, wciąż się powiększa ). 4

Standard języka SQL definiuje różne poziomy izolacji dla transakcji SERIALIZABLE ( uszeregowalny ) READ COMMITTED ( odczyt zatwierdzonych danych ) REPEATABLE READ ( powtarzalny odczyt ) READ UNCOMMITTED ( odczyt niezatwierdzonych danych ) Możliwe błędy występujące na danym poziomie izolacji brudne odczyty niepowtarzalne fantomy odczyty READ UNCOMMITTED tak tak tak READ COMMITTED nie tak tak REPEATABLE READ nie nie tak SERIALIZABLE nie nie nie Zasadniczo domyślnym poziomem izolacji powinien być SERIALIZABLE ale niektóre systemy używają READ COMMITTED System zarządzania bazą danych stosuje odpowiednie algorytmy zarządzania współbieżnym zbiorem transakcji. ( najczęściej blokowanie dwufazowe ) Blokada przydzielenie zasobu do zadania ( dla transakcji ). ( ang. lock ) - technika kontroli współbieżnego dostępu do danych polegająca na nałożeniu blokady na obiekt, który jest modyfikowany przez transakcję ( w szczególności inne transakcje nie mogą go zmieniać ). Blokady zakładane są automatycznie w momencie wydawania przez użytkownika poleceń modyfikacji danych lub ręcznie poprzez odpowiednie polecenie. Rodzaj blokowanego zasobu jest określany jako ziarnistość - granulacja elementów danych, może to być: pojedynczy atrybut wiersz tabeli blok danych tabela a nawet cała baza Rodzaje blokad: Wyłączne ( ang. exclusive lock ) - zasób może być przydzielony tylko do jednego zadania Współdzielone ( ang. shared lock ) - zasób może zostać przydzielony jednocześnie wielu zadaniom 5

Zakleszczenia ( ang. deadlock ) - stan, w którym dwie lub więcej równoległych transakcji znajduje się w stanie wzajemnego oczekiwania na uwolnienie blokady z potrzebnych zasobów, aby móc kontynuować działanie. System powinien wykryć blokadę i ją zlikwidować wyszukując cykl w grafie oczekiwań (ang. wait-for-graph) i wycofując jedną z należących do cyklu transakcji. przykłady: transakcja1 (użytkownik OLA) transakcja2 (użytkownik ANNA) UPDATE ANNA.pracownicy UPDATE OLA.dzialy SET placa=placa*1.5 SET siedziba= Dąbrowskiego WHERE numer = 8130; WHERE nazwa = Administracja ; UPDATE dzialy DELETE pracownicy SET siedziba = Dąbrowskiego WHERE numer = 8130; WHERE nazwa = Administracja ; desc Towary SELECT * FROM Towary ; INSERT INTO Towary ( Symbol, Nazwa, Cena )VALUES ( '125/a', ' Monitor ', 1780 ) ; SAVEPOINT Po_Wstawieniu ; UPDATE Towary SET Cena = Cena * 1.01 WHERE Symbol = '127/a' ; ALTER TABLE Dostawcy ADD Opis VARCHAR2(250) ; DELETE FROM Towary WHERE Symbol = '101/a' ; ROLLBACK TO SAVEPOINT Po_Wstawieniu ; 1 wiersz został utworzony. Punkt zachowania został utworzony. 1 wiersz został zmodyfikowany. Tabela została zmieniona. 0 wierszy zostało usuniętych. ROLLBACK TO SAVEPOINT Po_Wstawieniu * BŁĄD w linii 1: ORA-01086: punkt zachowania 'PO_WSTAWIENIU' nigdy nie został ustanowiony 6

zakładamy, że tabela A ma 25 wierszy i nie było automatycznego komitowania ; wykonujemy następujące czynności: SELECT * FROM A; DELETE FROM A ; CREATE TABLE Robocza( kol NUMBER(3)) ; INSERT INTO A VALUES (... ); ALTER USER... ; INSERT INTO A VALUES(... ); SELECT * FROM A ; Po tym poleceniu występuje awaria brak połączenia z serwerem ile wierszy ma obecnie tabela A? czy tabela Robocza została utworzona? Użytkownicy baz danych i ich uprawnienia użytkownik jest właścicielem utworzonych obiektów, które znajdują się wewnątrz jego schematu noszącego tą samą nazwę, co użytkownik. Możliwości użytkownika są ograniczane za pomocą uprawnień Definiowanie użytkowników składnia: CREATE USER <nazwa_konta> IDENTIFIED BY <hasło>... ; Modyfikowanie definicji użytkownika składnia: ALTER USER <nazwa_konta> ACCOUNT LOCK ; Zmiana hasła dla użytkownika składnia: ALTER USER <nazwa_konta> IDENTIFIED BY <hasło> ; Usunięcie użytkownika składnia: DROP USER <nazwa_konta> CASCADE ; Uprawnienia systemowe prawo do wykonywania operacji na bazie danych np. połączenia obiektowe prawo dostępu do obiektu z określoną możliwością SELECT, UPDATE,. 7

Role - grupa uprawnień (zarówno systemowych jak i obiektowych ) w ramach jednego nazwanego zbioru. predefiniowane ( CONNECT, RESOURCE, DBA ) zdefiniowane przez administratora (np. student2 ) przykłady: CREATE USER adept IDENTIFIED BY nowicjusz DEFAULT TABLESPACE student TEMPORARY TABLESPACE temp QUOTA 10M ON student; GRANT student2 TO adept; GRANT SELECT ON Studenci TO PUBLIC ; GRANT INSERT ON Towary TO SZEF ; GRANT UPDATE ( Rok, Kierunek ) ON Studenci TO GURU ; Niektóre uprawnienia systemowe to: CREATE TABLE CREATE ANY VIEW CREATE ANY INDEX ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE INSERT ANY TABLE CREATE TRIGGER EXECUTE ANY PROCEDURE 8