Bazy danych 9. SQL Klucze obce Transakcje

Podobne dokumenty
Bazy danych 9. Klucze obce Transakcje

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

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

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

Bazy danych 6a. Transakcje. P. F. Góra

Transakcje jednocześnie ACID

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

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

Bazy danych 10. SQL Widoki

Internetowe bazy danych

Bazy danych 7. SQL podstawy

Wykład 8. SQL praca z tabelami 5

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

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Oracle PL/SQL. Paweł Rajba.

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

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

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

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

Bazy danych 5. Samozłaczenie SQL podstawy

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

Właściwości transakcji

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

Bazy danych i usługi sieciowe

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra

Język SQL, zajęcia nr 2

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Transakcyjne przetwarzanie danych

Bazy Danych i Usługi Sieciowe

Bazy danych i usługi sieciowe

E.14 Bazy Danych cz. 15 SQL Transakcyjne przetwarzanie danych

Bazy danych 4. SQL podstawy. P. F. Góra

SQL/MySQL. Rafał Kern

Autor: Joanna Karwowska

Bazy danych - Materiały do laboratoriów VIII

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Bazy danych 2. Wykład 6 Transakcje

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

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

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

Bazy danych 4. SQL- podstawy

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Transakcje W poprzednich częściach instrukcje języka SQL traktowane były jak indywidualne operacje (transakcje)

Paweł Rajba

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Hbase, Hive i BigSQL

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Bazy danych. Andrzej Łachwa, UJ, /15

Wyzwalacze (triggery) Przykład

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

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

SIECI KOMPUTEROWE I BAZY DANYCH

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

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Bazy danych i systemy zarzadzania

Zarządzanie obiektami bazy danych Oracle11g

OLTP Przetwarzanie Transakcyjne

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

Bazy Danych. Ćwiczenie 13: transakcje w bazach danych

Aspekty aktywne baz danych

Bazy danych 7. Widoki i wyzwalacze. P. F. Góra

Zarządzanie transakcjami

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

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

Wykład :45 BD-1 W_3

Wykład 2. SQL 1 Structured Query Lenguage

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

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

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

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?

SIECI KOMPUTEROWE I BAZY DANYCH

Kurs. Podstawy MySQL

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Wykład 05 Bazy danych

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

Transakcje Wykład z bazy danych dla studen

Wykład 5. SQL praca z tabelami 2

Język SQL, zajęcia nr 1

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

Tadeusz Pankowski

E.14 Bazy Danych cz. 16 SQL Tworzenie, modyfikowanie i usuwanie tabel

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych 11. SQL Procedury składowane, kursory i wyzwalacze

SQL :: Data Definition Language

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

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

Oracle PL/SQL. Paweł Rajba.

Typy tabel serwera MySQL

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Bazy danych 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Projektowanie systemów baz danych

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

Transkrypt:

Bazy danych 9. SQL Klucze obce Transakcje P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06

Klucze obce Klucze obce powiazanie indeksowanej kolumny jakiejś tabeli z indeksowana kolumna innej tabeli, co pozwala na automatyczne dokonywanie zmian w powiazanych tabelach. Uwaga: To jest bardzo wygodne, ale bardzo niebezpieczne! A poza tym spowalnia działanie bazy. W MySQL działa tylko dla tabel InnoDB. 9. SQL Klucze obce. Transakcje 2

Składnia FOREIGN KEY (nazwa_kolumny_indeksowanej,...) REFERENCES nazwa_tabeli (nazwa_kolumny_indeksowanej,...) [ON DELETE {RESTRICT CASCADE SET NULL NO ACTION}] [ON UPDATE {RESTRICT CASCADE SET NULL NO ACTION}] 9. SQL Klucze obce. Transakcje 3

Przykład mysql> CREATE TABLE X -> (IdX TINYINT UNSIGNED NOT NULL PRIMARY KEY -> ENGINE=InnoDB; Query OK, 0 rows affected (0.16 sec) mysql> CREATE TABLE Y -> (IdY CHAR(1) NOT NULL PRIMARY KEY, -> IdX TINYINT UNSIGNED NOT NULL, -> INDEX (IdX), -> FOREIGN KEY (IdX) REFERENCES X (IdX) -> ON DELETE CASCADE -> ON UPDATE CASCADE) -> ENGINE=InnoDB; Query OK, 0 rows affected (0.22 sec) 9. SQL Klucze obce. Transakcje 4

mysql> SELECT * FROM Y; IdY IdX A 1 B 2 C 3 D 3 E 5 5 rows in set (0.07 sec) mysql> UPDATE X Set IdX=9 WHERE IdX=2; Query OK, 1 row affected (1.19 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM Y; IdY IdX A 1 C 3 D 3 E 5 B 9 5 rows in set (0.00 sec) 9. SQL Klucze obce. Transakcje 5

mysql> DELETE FROM X WHERE IdX=3; Query OK, 1 row affected (0.07 sec) mysql> SELECT * FROM Y; IdY IdX A 1 E 5 B 9 3 rows in set (0.00 sec) 9. SQL Klucze obce. Transakcje 6

Ograniczenia zapętlone Czasami potrzebna jest sytuacja, w której pierwsza tabela odwołuje się do drugiej, fruga zaś do pierwszej. Klucze obce można definiować tylko w odniesieniu do istniejacych kolumn w istniejacych tabelach. Jak obejść ten problem? mysql> CREATE TABLE Jeden -> (A SMALLINT UNSIGNED NOT NULL PRIMARY KEY, -> B CHAR(1) NOT NULL, -> INDEX(B)) -> ENGINE=InnoDB; Query OK, 0 rows affected (1.24 sec) mysql> CREATE TABLE Dwa -> (B CHAR(1) NOT NULL PRIMARY KEY, -> A SMALLINT UNSIGNED NOT NULL, -> INDEX(A), -> FOREIGN KEY (A) REFERENCES Jeden (A) -> ON DELETE RESTRICT -> ON UPDATE CASCADE) -> ENGINE=InnoDB; Query OK, 0 rows affected (1.25 sec) 9. SQL Klucze obce. Transakcje 7

mysql> ALTER TABLE Jeden -> ADD CONSTRAINT -> FOREIGN KEY (B) REFERENCES Dwa (B) -> ON DELETE RESTRICT -> ON UPDATE CASCADE; Query OK, 0 rows affected (1.43 sec) Records: 0 Duplicates: 0 Warnings: 0 Ale z tak zapętlonymi tabelami będzie sporo problemów 9. SQL Klucze obce. Transakcje 8

Transakcje Pojedynczy użytkownik ochrona szczególnie wrażliwych fragmentów. Transakcja wykonuje się albo w całości, albo wcale. Jeżeli w trakcie wykonywania transakcji wystapi jakiś bład, cała sekwencję operacji można odwołać, przywracajac bazę do stanu sprzed rozpoczęcia tej sekwencji. System wielodostępny 1. Jak wyżej. 2. Różne procesy klienckie odwołujace się do tych samych tabel nie moga się ze soba kłócić. 9. SQL Klucze obce. Transakcje 9

Zasady ACID A Atomicity atomowość. Transakcja jest niepodzielna, albo wszystko, albo nic. C Consistency spójność. Transakcja nie może naruszać integralności danych. I Isolation izolacja. item Transkacja musi odbywać się tak, jakby żadna inna transakcja nie miała miejsca w tym samym czasie. D Durability trwałość. Zmiany wprowadzone w transakcji musza być trwałe. 9. SQL Klucze obce. Transakcje 10

Wielodostępność co może pójść źle? 1. Niespójność odczytów jedna transakcja może odczytać dane zmieniane przez druga transakcję, chociaż transakcja ta nie zatwierdziła jeszcze zmian. 2. Niepowtarzalność odczytów transakcja odczytuje dane, nieco później odczytuje je ponownie, a odczytane dane sa inne, mimo iż transakcja odczytujaca nie została jeszcze zatwierdzona. 3. Odczyty fantomowe jedna tabela dodaje wiersz, druga transakcja aktualizuje wiersze. Nowy wiersz powinien być zaktualizowany, a nie jest. 9. SQL Klucze obce. Transakcje 11

Poziomy izolacji ANSI Poziom izolacji Niespójność Niepowtarzalność Odczyty odczytów odczytów fantomowe Read uncommitted OK OK OK Read committed NIE OK OK Repeatable read NIE NIE OK Serializable NIE NIE NIE 9. SQL Klucze obce. Transakcje 12

Jak to robimy w SQL? START TRANSACTION; START TRANSACTION; zapytanie 1 ; zapytanie 1 ; zapytanie 2 ; zapytanie 2 ;...... zapytanie N ; zapytanie N ; COMMIT; ROLLBACK; Zmiany zostaja zatwierdzone Zmiany zostaja odwołane 9. SQL Klucze obce. Transakcje 13

Uwaga Instrukcje DDL (Data Description Language), czyli instrukcje tworzace i usuwajace bazy oraz tworzace, usuwajace i modyfukujace tabele nie sa transakcyjne nie można ich wycofać. W MySQL tabele, które chcemy zabezpieczać transakcjami, musza być typu InnoDB. 9. SQL Klucze obce. Transakcje 14

Ryzyko zwiazane z transakcjami 1. Długo działajace transakcje blokuja dostęp innych użytkowników do danych, na których działa transakcja, dopóki nie zostanie ona zatwierdzona lub odwołana. 2. Należy unikać transakcji wtedy, gdy wymagana jest interakcja z użytkownikiem należy najpierw zebrać wszytskie dane, a dopiero potem rozpoczynać transakcję. 9. SQL Klucze obce. Transakcje 15

(B)lokowanie tabel LOCK TABLES nazwa tabeli [READ [LOW PRIORITY] WRITE]; Tryb READ chcę czytać tabelę i w tym czasie nie zezwalam innym na zapis. Tryb WRITE chcę zmieniać zawartość tabeli i w tym czasie nie zezwalam innym ani na zapis, ani na odczyt. 9. SQL Klucze obce. Transakcje 16

Tryb LOW PRIORITY WRITE pozwala innym watkom na założenie blokady READ; w tym czasie watek, który chce nałożyć blokadę LOW PRIORITY WRITE, musi czekać, aż tamten watek zwolni blokadę. UNLOCK TABLES; zwalnia wszystkie zablokowane przez dany watek tabele. Tabel nie należy blokować zbyt długo lub niepotrzebnie. 9. SQL Klucze obce. Transakcje 17