Internetowe bazy danych

Podobne dokumenty
Bazy danych 9. SQL Klucze obce Transakcje

Transakcje jednocześnie ACID

Wykład 8. SQL praca z tabelami 5

Bazy danych 9. Klucze obce Transakcje

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

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

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

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

Język SQL, zajęcia nr 1

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

Bazy Danych. Ćwiczenie 13: transakcje w bazach danych

Projektowanie systemów baz danych

Wykład 05 Bazy danych

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

Zarządzanie systemami informatycznymi. Zarządzanie internetową bazą danych MySQL

Bazy danych. Polecenia SQL

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy Danych i Usługi Sieciowe

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

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

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

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

Administracja bazami danych

Bazy danych i usługi sieciowe

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

Język SQL, zajęcia nr 2

Autor: Joanna Karwowska

Administracja i programowanie pod Microsoft SQL Server 2000

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

System Oracle podstawowe czynności administracyjne

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

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

Relacyjne bazy danych. Podstawy SQL

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

Bazy danych 2. Wykład 6 Transakcje

SQL Server. Odtwarzanie baz danych.

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

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

Struktura drzewa w MySQL. Michał Tyszczenko

Bazy danych 7. SQL podstawy

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

Typy tabel serwera MySQL

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Bazy danych i usługi sieciowe

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

Fizyczna struktura bazy danych w SQL Serwerze

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

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

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

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

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

Oracle PL/SQL. Paweł Rajba.

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Relacyjne bazy danych. Podstawy SQL

Wykład 4. SQL praca z tabelami 1

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

SZKOLENIE: Administrator baz danych. Cel szkolenia

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

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

Indeksowanie w bazach danych

Wykład 5: PHP: praca z bazą danych MySQL

Zarządzanie obiektami bazy danych Oracle11g

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

Bazy danych. Dr inż. Paweł Kasprowski

Instalacja MySQL.

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

Paweł Rajba

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Podstawy technologii WWW

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

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

BAZY DANYCH Cz III. Transakcje, Triggery

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP).

Wykład 5. SQL praca z tabelami 2

Oracle11g: Wprowadzenie do SQL

Programowanie w Ruby

Wykład 2. SQL 1 Structured Query Lenguage

Wyzwalacze (triggery) Przykład

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Przykładowa baza danych BIBLIOTEKA

Widok Connections po utworzeniu połączenia. Obszar roboczy

Bazy danych - Materiały do laboratoriów VIII

Bazy danych 10. SQL Widoki

SIECI KOMPUTEROWE I BAZY DANYCH

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

Cele. Definiowanie wyzwalaczy

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

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

Bazy danych 5. Samozłaczenie SQL podstawy

Kody błędów MySQL. Portal > Baza Wiedzy > MySQL > Ogólne > Kody błędów MySQL. Bartek z zenbox.pl komentarzy - W: Ogólne

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

Transkrypt:

Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 3 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl

Typy tabel MySQL domyślny MyISAM inne możliwe: Merge, Heap, InnoDB, BDB jedna baza różne typy tabel możliwe Kryteria wyboru tabela transakcyjna transaction-safe table TST: InnoDB, BDB tabela nietransakcyna non-transaction-safe table NTST: MyISAM, Merge, Heap Czy transakcje potrzebne? w aplikacjach WWW tabele transakcyjne nie są potrzebne bezstanowe środowisko HTTP nie wymaga zatwierdzania i odwoływania operacje nie są skomplikowane i nie jest konieczna niezależność, transakcja jako logika PHP

Tabele transakcyjne zalety: dane bardziej bezpieczne, można je odtworzyć gdy serwer MySQL lub system się załamie odtworzenie danych automatyczne lub ręczne na podstawie kopii zapasowej i dziennika tabeli łączenie kilku instrukcji SQL w jeden zbiór transakcję zbiór taki to jedna, atomowa operacja albo zrealizują się wszystkie operacje ze zbioru albo żadna z nich można odwołać dotychczas wykonane operacje gdy akcja zostanie przez użytkownika anulowana lub któryś z kroków się nie powiedzie można także odwołać operacje gdy współpraca interakcja użytkownika z aplikacją bazodanową WWW będzie podejrzana

Tabele nietransakcyjne zalety: są znacznie szybsze zapewnienie bezpieczeństwa danych i zarządzanie nimi jest czasochłonne zużywają mniej zasobów tak dysku, jak i pamięci prostsza idea konstrukcyjna CREATE TABLE winery ( winery_id int(4) NOT NULL, winery_name varchar(10) NOT NULL, region_id int(4) NOT NULL, PRIMARY KEY (winery_id), KEY name (winery_id), KEY region (region_id) ) type = InnoDB; MyISAM, Merge, Heap, InnoDB dostępne od MySQL 4 BDB trzeba wkompilować w serwer Przykład tworzenia tabeli InnoDB jak zakładamy tabelę, która nie jest realizowana MyISAM

MyISAM: bardzo szybkie wykonywanie zapytań, czasochłonność modyfikacji danych niewielka trzy wbudowane mechanizmy przechowywania danych łatwość tworzenia tabel o różnych konstrukcjach najlepiej dopasowana do aplikacji WWW blokowanie tabel jedna lub wiele tabel jest niedostępnych wtedy dla innych użytkowników blokady potrzebne na krótko DELETE i UPDATE na grupach wierszy szybko, dostęp index, klucz główny blokady rzadko potrzebne odczytów dużo więcej niż zapisów, współbieżność nie jest nagminna jedynie blokowanie grupowanie GROUP BY generalnie dostęp do większości wierszy w tabeli zarządzanie współbieżnymi uaktualnieniami automatyczna kopia nowych danych, reszta (SELECT) czyta niezmienione wersjonowanie danych atrybuty stałej długości na dysku wiersze stałej długości, szybki dostęp, łatwość rekonstrukcji, zmienna długość - dynamiczna

InnoDB (1): ogólnego przeznaczenia, alternatywa do MyISAM tabele transakcyjne obecny FOREIGN KEY, zatwierdzanie, odwoływanie operacji, odzyskiwanie danych, blokowanie wierszy zalety rzadko przewyższają wady w świecie WWW lepiej MyISAM COMMIT I ROLLBACK zbiór instrukcji SQL to jeden blok, albo zrobi się wszystko, albo nic elastyczne, szybkie blokowanie na poziomie wierszy blokowane są wiersze, gdzie realizuje się zapytania i uaktualnienia, a nie całe tabele jak w MyISAM sprawniejsze niż w MyISAM przy dużej liczbie użytkowników ograniczenia kluczy obcy dbałość o integralność danych nie można dodać żadnych wierszy, które nie mają odpowiedników w innej tabeli ograniczenia kluczy obcych nie są konieczne wymagają dużo zasobów, z powodzeniem może je zastąpić logika PHP punkty kontrolne odzyskiwania danych wpis do pliku dziennika w przypadku załamania bazy lub systemu można odzyskać dane z tabeli InnoDB

InnoDB (2): elastyczna izolacja transakcji model można rozluźnić by przyspieszyć wykonywanie zapytań część właściwości transakcji znika elastyczne indeksowanie automatyczna decyzja czy w tabeli potrzebny jest szybki indeks mieszający zajmują dużo więcej przestrzeni niż MyISAM jeśli są klucze obce to trzeba na zarządzanie tabelami dużo więcej zasobów wersjonowanie danych i użycie transakcji zarządzanie tabelami dużo więcej zasobów większa ilość pamięci by panować nad blokadami wierszy blokowanie może obniżyć wydajność skoro jest na poziomie wierszy więcej trzeba ustanawiać i zdejmować blokad indeksy zakładać gdy ładujemy dane do tabel, potem jest to bardzo czasochłonne

Heap: do specjalnych celów, mają ograniczenia przechowywane w pamięci, nie na dysku tabele tymczasowe, tabele z częstymi odwołaniami ograniczenia jak serwer zatrzyma się, ponowne uruchomienie, nie ładują się indeksowanie mieszające najszybsze wyszukiwanie dokładne dopasowanie jako = i <=> inne porównania nie działają, nie działa sortowanie ORDER BY do znalezienia wiersza związanego z wartością klucza nie obsługują wszystkich typów brak TEXT, BLOB, brak mechanizmu AUTO_INCREMENT trzymanie w pamięci zasobochłonne używać z umiarem, małe gabaryty blokady na poziomie całych tabel jak padnie serwer to tabela przepada jest tylko w pamięci!

Transakcje COMMIT i ROLLBACK (1) seria instrukcji SQL jako jedna niepodzielna grupa, działa tylko w tabelach transakcyjnych (InnoDB) transakcje = powtarzalne odczyty domyślnie MySQL na automatyczne zatwierdzanie aktualizacja danych zaraz po wykonaniu modyfikacji wyłączenie poprzez ustawienie parametru bądź włączenie transakcji: SET AUTOCOMMIT = 0; START TRANSACTION; SELECT * FROM tabela1 WHERE typ LIKE tutu ; UPDATE tabela2 SET suma = 1 WHERE typ LIKE tutu ; COMMIT; SET AUTOCOMMIT = 1; START TRANSACTION; SELECT * FROM tabela1 WHERE typ LIKE tutu ; UPDATE tabela2 SET suma = 1 WHERE typ LIKE tutu ; ROLLBACK;

Transakcje COMMIT i ROLLBACK (2) BEGIN WORK; SELECT * FROM tabela1 WHERE typ LIKE tutu ; UPDATE tabela2 SET suma = 1 WHERE typ LIKE tutu ; COMMIT; BEGIN; SELECT * FROM tabela1 WHERE typ LIKE tutu ; UPDATE tabela2 SET suma = 1 WHERE typ LIKE tutu ; ROLLBACK; nie można cofnąć instrukcji, które tworzą i usuwają bazy danych, tworzą, usuwają tabele projektować tak transakcje by ich nie było w nich, inaczej nie można cofnąć całej transakcji niejawne zatwierdzenie robią: ALTER TABLE BEGIN CREATE INDEX DROP DATABASE DROP INDEX DROP TABLE LOAD MASTER TABLE LOCK TABLES RENAME TABLE SET AUTOCOMMIT=1 START TRANSACTION TRUNCATE TABLE UNLOCK TABLES CREATE TABLE

Transakcje COMMIT i ROLLBACK (3) wycofanie transakcji do punku kontrolnego: SAVEPOINT identyfikator ROLLBACK TO SAVEPOINT identyfikator blokowanie tabel - LOCK TABLE blokowanie tabeli dla potrzeb bieżącego wątku, UNLOCK TABLES zwalnia wszystkie blokady nałożone w danym wątku, niejawne odblokowanie przy wykonaniu innej LOCK TABLES lub przy zamknięciu połączenia z serwerem LOCK TABLES niebezpieczna dla transakcji zatwierdza aktywną transakcję przed nałożeniem blokad Użycie LOCK TABLES wymaga uprawnień do LOCK TABLES i SELECT, wcześniejsze wersje MySQL: SELECT, INSERT, DELETE, UPDATE blokada READ tylko odczyt z tabeli, WRITE wątek, który założył może pisać, czytać, reszta wątków zablokowana READ LOCAL możliwe są niekonfliktowe INSERT-y jeśli blokada z synonimem trzeba odwołać się z synonimem:

Transakcje COMMIT i ROLLBACK (4) LOCK TABLE t READ; SELECT * FROM t AS synonim; LOCK TABLE t AS synonim READ; SELECT * FROM t; SELECT * FROM t AS synonim; WRITE ma wyższy priorytet od READ jeśli nałożono READ i czeka WRITE do nałożenia, to stawiane kolejne READ muszą czekać aż WRITE będzie nałożona i zwolniona LOW_PRIORITY WRITE pozwala nałożyć READ chociaż czekamy na rozstrzygnięcie z WRITE LOCK TABLES: blokada do odczytu i zapisu, najpierw zapis, KILL pozwala znieść oczekiwanie na założenie blokady w MyISAM blokowanie przyspiesza wykonywanie wstawiania, aktualizacji, usuwania, klucze są pamiętane w pamięci podręcznej, normalnie jest ona czyszczona po każdym zapytaniu SQL-owym zasadniczo nie ma potrzeby robienia blokad!

Transakcje COMMIT i ROLLBACK (5) LOCK TABLES trans READ, klienci WRITE; SELECT SUM(value) FROM trans WHERE id_klienta == pewien_id; UPDATE klienci SET razem = suma_z_poprzednich_instrukcji WHERE id_klienta == pewnie_id; UNLOCK TABLES; bez LOCK TABLES między SELECT a UPDATE inny wątek może spowodować wstawienie nowego wiersza do tabeli trans alternatywą do blokowania są operacje SET postaci: UPDATE klienci SET wartosc = wartosc + nowa_wartosc