Upload
katmpb
View
2.197
Download
0
Embed Size (px)
DESCRIPTION
Kurs MySQL i SQL, bazy danych, prezentacja ppt, pdf - tworzenie stron www, porady, trening, kurs internetowy online
Citation preview
MySQL jako przykład darmowego systemu bazodanowego
Autor: KatMPB
Autor: KatMPB 2
Wstęp – o czym będzie mowa
Wprowadzenie do MySQL: System zarządzania bazą danych Czym jest MySQL Historia MySQL Architektura MySQL Licencja GPL
SQL widziany z punktu widzenia MySQL Administrowanie MySQL
Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych)
Instalowanie i uruchamianie MySQL
Autor: KatMPB 3
Wstęp – o czym będzie mowa
Konfigurowanie i zarządzanie uprawnieniami użytkowników
Tabele do przechowywania uprawnień Pliki konfiguracyjne Kopie zapasowe
Dostęp do MySQL z programów napisanych w języku Java
Dostęp do MySQL z programów napisanych w języku PHP
Dostęp do MySQL z programów napisanych w językach C i C++
Transakcje
Autor: KatMPB 4
Wprowadzenie do MySQL
System zarządzania bazą danych (DBMS) jest zorganizowanym zbiorem narzędzi umożliwiającym dostęp i zarządzanie jedną lub więcej bazami danych. DBMS jest powłoką, która otacza bazę danych i za pomocą której dokonują się wszystkie operacje na bazie danych. Funkcje realizowane przez większość DBMS zaliczamy do trzech grup:-pielęgnacja danych-wyszukiwanie danych-kontrola danych
Autor: KatMPB 5
Wprowadzenie do MySQL
Czym jest MySQL?
Jest to system zarządzania bazą danych oparty na relacyjnym modelu danych i wykorzystujący standard języka SQL.(ver 4.0 [4.1] wykorzystuje standard SQL 92).
System działa na na niemal każdej platformie UNIX, w tym systemach zbliżonych do Uniksa, na przykład Solaris, FreeBSD, czy Linux; działa również na platformie Windows.System MySQL jest bezpłatny; można także ściągnąć jego kod źródłowy.
Autor: KatMPB 6
Wprowadzenie do MySQL
Historia MySQL
System MySQL powstał w połowie lat dziewięćdziesiątych.Jego autorem był Michael ‘Monty’ Widenius ze szwedzkiej firmy TcX DataKonsult AB. Pierwsza powszechnie dostępna wersja została wydana w maju 1995 roku. (mSQL->MySQL)
Obecnie rozwojem MySQL zajmuje się firma MySQL AB.
Autor: KatMPB 7
Wprowadzenie do MySQL
Architektura MySQL
Jest to przykład systemu bazującego na architekturze klient-serwer.Jeżeli korzystamy z sieci możemy oddzielić programy klienckie od naszego serwera i tworzyć aplikacje pasujące do środowiska wykorzystywanego przez użytkownika na przykład Windows czy Linux.Sercem instalacji MySQL jest proces serwera bazy danych. Jest on wykonywany na jednym serwerze. MySQL nie posiada jeszcze funkcji rozproszenie obciążenia na kilka serwerów, jednak serwer MySQL potrafi korzystać z kilku procesorów zainstalowanych na jednym komputerze.
Uwaga! - Dla każdego połączenia klient-serwer jest tworzony oddzielny proces MYSQLD.
Autor: KatMPB 8
Wprowadzenie do MySQL
Server
MYSQLD
Wielu klientów
DATABASE
Jednoczesny dostęp klientów
Klient (ODBC, JDBC)
Klient
windows
TCP/IP
linux
TCP/IP
Autor: KatMPB 9
Wprowadzenie do MySQL
Licencja open source
MySQL jest przykładem otwartego oprogramowania open source.
Termin open source oznacza, że oprogramowanie jest dostarczone wraz z jego kodem źródłowym. Licencja MySQL-a (GPL – General Public License) pozwala na jego używanie bez ograniczeń. Jeśli jednak chcemy wbudować MySQL w swój komercyjny produkt, potrzebna jest osobna licencja.
Autor: KatMPB 10
SQL widziany z punktu widzenia MySQL Złączenia (klucze obce) Podzapytania Indeksy Integralność danych (integralność: encji,
referencyjna, dziedziny, asercje) Perspektywy Procedury serwera STORED PROCEDURES
(funkcje serwera) Przełączniki typu TRIGGER (wyzwalacze)
Uwaga! - Wszystkie podpunkty będą omówione na przykładach.
Autor: KatMPB 11
SQL widziany z punktu widzenia MySQL
create table faktury (numer int primary key,dostawca char(32) not null,data datetime not null default getdate()
) type=InnoDB;
create table pozycje (nrfaktury int not null,numer int not null,towar char(24) not null,ilosc int not null,cena money not null,CONSTRAINT pozycje_faktury FOREIGN KEY (nrfaktury) REFERENCES faktury(numer),primary key (nrfaktury, numer)
) type=InnoDB;
Złączenia (klucze obce)
Aby mówić o kluczach obcych w MySQL tabele muszą być typu InnoDB (od ver 4.0)
Autor: KatMPB 12
SQL widziany z punktu widzenia MySQL
Złączenia (klucze obce)
Typy tabel:
- HEAP (brak obsługi transakcji, dane przechowywane w pamięci, szybki dostęp, są usuwane po zakończeni pracy serwera)- ISAM- MyISAM (brak obsługi transakcji, domyślny typ tabel)- MARGE (brak obsługi transakcji, stosowane do łączenia kilku tabel w jedną, bardzo duże zbiory danych)- BDB (obsługa transakcji)- InnoDB (obsługa transakcji, posiada obsługę mechanizmu kluczy obcych)
Autor: KatMPB 13
SQL widziany z punktu widzenia MySQL
Złączenia
-Złączenia własne
create table part ( part_id INT, description VARCHAR(32), parent_part_id INT );
insert into part (part_id, description, parent_part_id) values (1, ‘table and chairs’, NULL);
insert into part (part_id, description, parent_part_id) values (2, ‘chair’, 1);
insert into part (part_id, description, parent_part_id) values (3, ‘table’, 1);
select p1.description as „Combined”, p2.description as „Parts” from part p1, part p2 where p1.part_id = p2.parent_part_id;
Autor: KatMPB 14
SQL widziany z punktu widzenia MySQL
Złączenia
-Złączenia zewnętrzne (zostały po raz pierwszy ustandaryzowane w SQL 92)Niektóre rzadko używane typy tych złączeń nie są używane.
select * from faktury, pozycje where faktury.numer = pozycje.numerf;
select * from faktury LEFT OUTER JOIN pozycje on faktury.numer = pozycje.numerf;
Autor: KatMPB 15
SQL widziany z punktu widzenia MySQL
Podzapytania nie są obsługiwane przez wersje 4.0 włącznie.Wprowadzono je dopiero od wersji 4.1.
select NazwiskoPrac, NazwaWydziału, Pensjafrom Wykładowcy Lwhere Pensja >
(select avg(Pensja) from Wykładowcy where L.NazwaWydziału = NazwaWydziału);
Opis zadania:
Wypisz listę nazwisk pracowników, nazw wydziałów i pensji wszystkich wykładowców, którzy zarabiają więcej niż wynosi średniapensja pracownika ich wydziału.
Autor: KatMPB 16
SQL widziany z punktu widzenia MySQL
Indeksy są niewielką kopią całej tabeli wstępnie posortowaną.
create index nazwa_indeksu on nazwa_tabeli (nazwa_kolumny_1, … );
Autor: KatMPB 17
SQL widziany z punktu widzenia MySQL
Integralność danych
-Integralność encji jest realizowana przez klucze główne-Integralność referencyjna jest realizowana przez klucze obce-Integralność dziedziny
create table nazwa (…pole int,…CHECK (pole BETWEEN 100 AND 1000),…
)Klauzula CHECK służy do wymuszenia integralności dziedziny, nie jest wspierana przez MySQL do ver 4.1 włącznie.
CREATE DOMAIN – polecenie SQL służące do definiowania typów kolumn.
Autor: KatMPB 18
SQL widziany z punktu widzenia MySQL
Integralność danych
-Asercje nie są wspierane przez MySQL do ver 4.1 włącznie.
Więzy mogą być nazywane i określane niezależnie od jakiejkolwiek tabelilub dziedziny. W takim przypadku więzy są nazywane asercjami.Możemy na przykład zdefiniować asercje dla jakieś tabeli i gdy dowolnainstrukcja SQL dokonuje wstawienia, modyfikacji bądź usunięcia wiersza tabeli, istnieje możliwość, że więzy mogą zostać naruszone.
Sprawdzanie więzów może odbywać się w trybie natychmiastowym bądźw trybie opóźnionym (na koniec transakcji).
Autor: KatMPB 19
SQL widziany z punktu widzenia MySQL
Perspektywy i procedury serwera (funkcje serwera) są wspierane od wersji 5.0)
Uwaga! - W związku z tym, że baza danych w wersji 5 znajduje się w fazietestowej nie będę opisywał zasad tworzenia perspektyw, czy procedur w MySQL.Uwaga2! - Programiści z firmy MySQL AB postawili sobie ambitny cel: mianowicie MySQL w wersji 5 ma wspierać w pełni standard języka SQL (SQL 92 / SQL 99). Przełączniki typu TRIGGER (wyzwalacze) będą prawdopodobnie wspierane od wersji 5.1.
Pisanie procedur czy funkcji składowanych na serwerze odbywa się dzięki dodatkowej składni SQL wprowadzonej do MySQL, inaczej ma się sprawa w systemie Oracle gdzie pisanie kodu odbywa się w języku PL/SQL.
Autor: KatMPB 20
Administrowanie MySQL
Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych)
Instalowanie i uruchamianie MySQL Konfigurowanie i zarządzanie uprawnieniami
użytkowników Tabele do przechowywania uprawnień Pliki konfiguracyjne Kopie zapasowe
Autor: KatMPB 21
Administrowanie MySQL
Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych)
Administrator danych jest to osoba która pełni funkcję nad administrowaniem danych. Administrowanie danymi jest funkcją związaną z zarządzaniem, planowaniem i dokumentowaniem zasobów danych w przedsiębiorstwie.
Administrator bazy danych będzie zaangażowany w projektowanie fizyczne systemów baz danych. W zakresie zarządzania danymi administrator systemów baz danych. W zakresie zarządzania danymi administrator bazy danych będzie zajmował się zwłaszcza problematyką kontroli danych; bazy danych będzie zajmował się zwłaszcza problematyką kontroli danych; jest on również odpowiedzialny za tworzenie kopii zapasowych baz danych.jest on również odpowiedzialny za tworzenie kopii zapasowych baz danych.
Autor: KatMPB 22
Administrowanie MySQL
Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych)
Głównym narzędziem administratora danych i administratora bazy danych jest słownik danych.
Słownik danych jest sposobem zapisywania metadanych przedsiębiorstwa, to znaczy danych na temat danych (koncepcyjne słowniki danych, logiczne słowniki danych i fizyczne słowniki danych).
Koncepcyjne i logiczne słowniki danych są zazwyczaj domeną administratora danych. Fizyczne słowniki danych są domeną administratora bazy danych.
Uwaga! – Administrator bazy danych w wielu przypadkach pełni funkcję administratora danych. Administrator danych będzie uczestniczył w analizie i projektowaniu systemu baz danych.Administrator baz danych będzie zaangażowany w projektowanie fizyczne systemów baz danych.
Autor: KatMPB 23
Administrowanie MySQL
Instalowanie i uruchamianie MySQL
System LINIUX:
- Instalowanie MySQL z kodu źródłowego (pozostawiam użytkownikowi).
- Instalowanie MySQL z pakietów binarnych (następny slajd).
Autor: KatMPB 24
Administrowanie MySQL
Instalowanie i uruchamianie MySQL z pakietów binarnych (RPM)
Aby utworzyć w pełni działającą instalację należy pobrać i zainstalować podstawowy pakiet serwera z listy pakietów wymienionych poniżej:
- MySQL.rpm (podstawowy pakiet serwera)- MySQL-bench.rpm- MySQL-client.rpm (aplikacja klienta MySQL)- MySQL.devel.rpm (pliki nagłówkowe i biblioteki niezbędne w programowaniu)- MySQL-shared.rpm- MySQL-Max.rpm (wersja serwera mysqld-max)
Polecenie do instalacji pakietów rpm –ivh nazwa_pakietu.rpm.
Autor: KatMPB 25
Administrowanie MySQL
Instalowanie i uruchamianie MySQL (LINUX)
Polecenie do jednorazowego uruchamiania i zatrzymywania serwera:
/etc/rc.d/init.d/mysql start/etc/rc.d/init.d/mysql stop
W czasie uruchamiania MySQL odczytuje plik konfiguracyjny /etc/my.cnf, który zawiera opcje ustalające sposób pracy serwera.
Ciekawostka! - W przypadku instalacji MySQL z pakietów binarnych domyślnieserwer jest uruchamiany na 3, 4 i 5 poziomie startowym.
Autor: KatMPB 26
Administrowanie MySQL
Instalowanie i uruchamianie MySQL (WINDOWS)
System WINDOWS:
Instalacja jest trywialna .
Ciekawostka! - Domyślnie zainstalowanym serwerem jest serwer MySQL (niewersją MAX)
Aby to zmienić wydajemy polecenie mysql.exe -remove, a następnie mysql-max-nt.exe --install
Autor: KatMPB 27
Administrowanie MySQL
Konfigurowanie i zarządzanie uprawnieniami użytkowników
Domyślnie podczas instalacji serwera MySQL tworzone są dwa konta użytkowników: konto administratora (root) oraz konto anonimowe.Domyślnie użytkownik root nie ma hasła.
Procedura zmiany hasła użytkownika root:1. $mysql –u root2. use mysql;3. update user set password=PASSWORD(‘tajne’) where user = ‘root’;4. FLUSH PRIVILEGES;
Uwaga! - Zaraz po zainstalowaniu MySQL zalecane jest usuwanie konta anonimowego.
Autor: KatMPB 28
Administrowanie MySQL
Konfigurowanie i zarządzanie uprawnieniami użytkowników
Tworzenie kont użytkowników (SQL)
GRANT prawo [(lista kolumn)] ON baza_lub_tabelaTO użytkownik [IDENTIFIED BY ‘hasło’] [with grant option];FLUSH PRIVILEGES
Przykład!
grant select, inserton linuxmaniad.*to katmpb identified by „hasło”
grant allon linuxmaniad.*to katmpb@% identified by „hasło”
to katmpb@’%.kattserv.no-ip.com’ identified by „hasło”
Autor: KatMPB 29
Administrowanie MySQL
Konfigurowanie i zarządzanie uprawnieniami użytkowników
Dostępne prawa w instrukcji GRANT:ALLALL PRIVILEGESALTERCREATEDELETEDROPFILE – pozwala na dostęp do plików zapisanych na serwerzeINDEXINSERTPROCESS – pozwala na przeglądanie informacji o procesie serweraRELOAD – pozwala na powtórne załadowanie informacji z tabeli uprawnień do serweraSELECTSHUTDOWNUPDATE
USAGE – pozwala na utworzenie konta użytkownika bez żadnych uprawnień
Autor: KatMPB 30
Administrowanie MySQL
Konfigurowanie i zarządzanie uprawnieniami użytkowników
Usuwanie kont użytkowników (SQL)
REVOKE prawo [(lista kolumn)] ON baza_lub_tabelaFROM użytkownik;FLUSH PRIVILAGES;
Przykład!
revoke select, inserton linuxmaniad.*from katmpb@%
Uwaga! – Wykonanie polecenia GRANT i REVOKE powoduje zmiany w tabelach systemowych;
Autor: KatMPB 31
Administrowanie MySQL
Tabele do przechowywania uprawnień
Tabele systemowe są zawarte w bazie danych mysql.
Tabelami systemowymi są:
- columns_priv- db- func- host- tables_priv- user
Wszystkie powyższe tabele z wyjątkiem func przechowują informacje na temat przydzielonych przywilejów. (Tabela func przechowuje funkcje zdefiniowane przez użytkownika).
Autor: KatMPB 32
Administrowanie MySQL
Tabele do przechowywania uprawnień
Tabela user zawiera dane o użytkownikach, którzy są uprawnieni do logowania się do serwera MySQL (uwaga1 do prezentacji). Tabela db i host określają, które bazy danych mogą być temu użytkownikowi udostępnione (uwaga2 do prezentacji).Tabela tables_priv zawiera nazwy tych tabel, do których użytkownik ma dostęp, podobnie tabela columns_priv.
Uwaga! - Kolejność sprawdzania przywilejów jest następująca:USER->DB->HOST->TABLES_PRIV->COLUMNS_PRIV.
Autor: KatMPB 33
Administrowanie MySQL
Pliki konfiguracyjne
MySQL posiada kilka plików pozwalających na ustawienie opcji konfiguracyjnychserwera. Pliki te umożliwiają również określenie domyślnych parametrów dlaprogramu mysqld i innych narzędzi dostarczonych wraz z MySQL. Zarówna w Windowsie (my.cnf i my.ini) jak i Linuxie (my.cnf) zawartość tych plików jest niemal identyczna.
Uwaga! – Korzystając z plików konfiguracyjnych można ustawić opcje zarówno dla serwera, jak i dla poszczególnych użytkowników (w systemie Linux).
Autor: KatMPB 34
Administrowanie MySQL
Pliki konfiguracyjne
Przykładowy plik konfiguracyjny:
[client]
port=3306#host=192.168.0.1#user=root#password=test#database=linuxmaniad
[mysqld]
skip-lockingport=3306default-table-type=innodbbasedir=F:/mysqldatadir=F:/mysql/data
set-variable=key_buffer=16Mset-variable=max_allowed_packet=1Mset-variable=thread_stack=128Kset-variable=flush_time=1800…
…innodb_data_file_path = ibdata1:10Minnodb_data_home_dir =""innodb_log_group_home_dir =.\innodb_log_arch_dir = .\
set-variable = innodb_mirrored_log_groups=1set-variable = innodb_log_files_in_group=2set-variable = innodb_log_file_size=5Mset-variable = innodb_log_buffer_size=8Minnodb_flush_log_at_trx_commit=1innodb_log_archive=0set-variable = innodb_buffer_pool_size=16Mset-variable = innodb_additional_mem_pool_size=2Mset-variable = innodb_file_io_threads=4set-variable = innodb_lock_wait_timeout=50
[WinMySQLadmin]
Server=F:/mysql/bin/mysqld-max-nt.exeuser=rootpassword=test
Autor: KatMPB 35
Administrowanie MySQL
Kopie zapasowe
W przypadku tabel MyISAM można tworzyć kopie zapasowe poprzez zatrzymanie bazy danych i skopiowanie wszystkich plików z katalogu bazy danych.
W przypadku tabel InnoDB jest nieco inaczej.
Pierwszy sposób:
- zatrzymanie serwera;- skopiowanie pliku <nazwa_bazy_danych>\*.frm;- skopiowanie pliku danych InnoDB;- skopiowanie pliku śladu InnoDB;- uruchomienie serwera.
Autor: KatMPB 36
Administrowanie MySQL
Kopie zapasowe
Drugi sposób (zalecany):
Użycie programu mysqldump, który tworzy czytelny plik wynikowy.Pliki powstałe za jego pomocą można przenosić między systemami Windows – Linux.
Składnia polecenia: $mysqldump [OPCJE] baza_danych | --all-databases [tabele]
Przykład!
C:\mysql\bin\mysqldump --opt --all-databases > backup.sql/etc/bin/mysqldump –opt –all-databases > backup.sql
Opcja -opt oznacza to samo co: --quick --add-drop-table --add-locks --extended-insert --lock-tables.
Autor: KatMPB 37
Administrowanie MySQL
Kopie zapasowe
Polecenie wewnętrzne klienta mysqla które wykonuje skrypty SQL z plikówzewnętrznych.
SOURCE <nazwa_skryptu>;
Autor: KatMPB 38
Dostęp do MySQL z programów napisanych w języku Java
Java korzysta z biblioteki (API) dzięki którym możemy skorzystać zzewnętrznych źródeł danych. Jedną z nich jest JDBC(Java Database Connectivity) – stała się ona standardową metodądostępu do relacyjnych baz danych.
Ważne - aplikacja napisana w języku Java, korzystająca zstandardowych klas i interfejsów JDBC oraz jedynie ze standardujęzyka SQL, może być przenoszona pomiędzy bazami danych korzystającymi z różnych systemów zarządzania relacyjnymi bazamidanych.
Autor: KatMPB 39
Dostęp do MySQL z programów napisanych w języku Java
JDBC zawiera podstawowe API JDBC oraz rozszerzone.
Część podstawowa zawiera interfejsy standardowe zawierające:
- tworzenie połączeń z bazą danych;- dostęp do wyników zapytań;- pobieranie metadanych ze zbiorów wynikowych.
(J2SE - część podstawowa, J2EE - część rozszerzona [np. transakcje rozproszone]).
Sterownik JDBC
API biblioteki JDBC definiuje jedynie interfejsy obiektów wykorzystywanych do wykonywania operacjina bazie danych. Nie zawiera implementacji klas dla tych interfejsów. Implementacje klas JDBCdostarcza najczęściej producent systemu. Zbiór tych implementacji nazywany jest sterownikiem
JDBC.
Autor: KatMPB 40
Dostęp do MySQL z programów napisanych w języku Java
Rys. komunikacja aplikacji z systemem bazodanowym
Aplikacja kliencka napisanaw języku Java
API JDBC
Sterownik JDBC
System zewnętrzny
J2SE/J2EE
Sterowniki implementujące interfejsy zdefiniowane w API Java
Autor: KatMPB 41
Dostęp do MySQL z programów napisanych w języku Java
Sterownik JDBC można podzielić na cztery kategorie:
-Mostek JDBC-ODBC – te sterowniki korzystają z ODBC do implementacji klasJDBC. Sterowniki te nie są zwykle przenośne, ponieważ zależą zwykle odbibliotek związanych z danym produktem.Komunikacja: JDBC->ODBC->system_bazy_danych.Przykładem tego sterownika jest sterownik JDBC-ODBC wchodzący w składpakietu J2SE).-Połączenie własne API z kodem Java-Realizacja protokołu sieciowego przy pomocy kodu Java-Kod języka Java realizujący protokół systemu bazy danych – te sterowniki sąnapisane wyłącznie w języku Java i implementują interfejsy JDBC.„Realizują one przesył danych zgodnie z protokołem używanym przez systemobsługi zewnętrznej bazy danych.”Firma MySQL-AB jest przykładem dostawcy tego właśnie sterownika.
Autor: KatMPB 42
Dostęp do MySQL z programów napisanych w języku PHP Patrz przykłady
Uwaga! - Do programu Prezentacja-MySQL-PEAR/prezentacja.php
PEAR (The PHP Extension and Application Repository – rozszerzenie PHP i magazyn aplikacji).
PEAR jest przede wszystkim obszernym zbiorem klas PHP, co stwarza możliwości programowania obiektowego w PHP.
Interfejs abstrakcji bazy danych PEAR umożliwia pisanie stron internetowych w PHP które są niezależne od systemu bazodanowego (niezależne w tym sensie, że dają się niezmiernie łatwo przenosić).
Autor: KatMPB 43
Dostęp do MySQL z programów napisanych w językach C i C++ Patrz przykłady
Dostęp do bazy danych MySQL z programów napisanych w C++ umożliwia biblioteka MySQL++ dostępna dla C++ Buildera, Microsoft Visual C++ i programów napisanych w C++ pod Linuksy.
UWAGA! – PO URUCHOMIENIU PROGRAMU Z PRZYKŁADU NIE DZIAŁA JUŻ PIERWSZA METODA
POŁĄCZENIA (NIE WIEM DLACZEGO) .
Dostęp do bazy danych MySQL z programów napisanych w języku C w systemach Linux umożliwia biblioteka libmysqlclient.W przypadku instalacji z pakietów binarnych potrzebny jest pakiet mysql-devel.rpm oraz kompilator GNU gcc 2.95 lub nowszy.
Autor: KatMPB 44
Transakcje
Czym są transakcje? ANSI SQL a transakcje Obsługa transakcji dla wielu użytkowników
(poziomy izolacji ANSI, podstawowa terminologia)
MySQL i transakcje
Autor: KatMPB 45
Transakcje i blokowanie
Czym są transakcje?
Transakcja to niepodzielny logicznie blok instrukcji.
Czym jest blok instrukcji?Jest to zbiór modyfikacji w bazie danych, który musi być albo wykonany w całości, albo niewykonany w całości.
Zasady ACID (Atomic [atomosość], Consistent [spójność], Isolated [izolacja], Durable [trwałość]) oznaczają własności jakie powinna posiadać transakcja:
-Atomowość: transakcja, nawet jeżeli składa się na nią grupa operacji, musi działać jako pojedyncza instrukcja.-Spójność: na końcu transakcji baza danych musi być spójna.-Izolacja: oznacza, że każda transakcja, niezależnie od ilości rozpoczętych transakcji w systemie, musi być niezależna od innych.-Trwałość: po zakończeniu transakcji jej wyniki muszą być wprowadzone do systemu (zwykle realizowane poprzez dzienniki transakcji).
Autor: KatMPB 46
Transakcje i blokowanie
ANSI SQL a transakcje
W standardzie SQL transakcje są kontrolowane za pomocą trzech instrukcji:(tabele InnoDB, AUTOCOMMIT włączone)
-BEGIN WORK (instrukcja nadmiarowa)-COMMIT-ROLLBACK
Autor: KatMPB 47
Transakcje i blokowanie
Obsługa transakcji dla wielu użytkowników
Jednym z najtrudniejszych do zrealizowania aspektów relacyjnych baz danych jest izolacja poszczególnych użytkowników w czasie aktualizacji bazy danych.
Standard SQL definiuje różne poziomy izolacji, jakie może zapewnić baza danych.
Definicja ANSI/ISO poziomu izolacji
Niespójność odczytów
Niepowtarzalność odczytów
Fantomy
Read uncommitted Dopuszczalne Dopuszczalne Dopuszczalne
Read committed Niedopuszczalne Dopuszczalne Dopuszczalne
Repeatable read Niedopuszczalne Niedopuszczalne Dopuszczalne
Serializable Niedopuszczalne Niedopuszczalne Niedopuszczalne
Uwaga! - instrukcja do zmiany poziomów izolacji definiowana przez ANSI SQL: set transaction isolation level.
Autor: KatMPB 48
Transakcje i blokowanie
Obsługa transakcji dla wielu użytkowników
-Niespójność odczytów występuje, gdy jedna transakcja SQL może odczytać dane zmieniane przez drugą transakcje, chociaż transakcja zmieniająca dane nie zatwierdziła zmian.(Domyślnie tabele typu InnoDB obsługujące transakcje nie posiadają obsługi transakcji dopuszczających niespójność odczytów).-Niepowtarzalność odczytów powoduje, że transakcja może „widzieć” zmiany zatwierdzone przez inne transakcje, nawet jeżeli sama podczas odczytu nie jest zatwierdzona.-Odczyty fantomowe występują podczas dodawania wierszy do tabeli w czasie, gdy druga tabela aktualizuje ja. Powinien zostać zaktualizowany również nowy wiersz – a nie jest.
Autor: KatMPB 49
Transakcje i blokowanie
Obsługa transakcji dla wielu użytkowników
Nie można zagnieżdżać transakcji. Jedynie kilka baz danych obsługuje mechanizm punktów kontrolnych przez SQL, w których ustawia się znaczniki fragmentów transakcji i wycofanie jest przeprowadzone jedynie do określonego punktu kontrolnego. MySQL nie obsługuje tej funkcji.
Autor: KatMPB 50
Transakcje i blokowanie
MySQL i transakcje
W tabelach typu MyISAM można emulować transakcje za pomocą blokad.
LOCK TABLES nazwa_tabeli [ READ | WRITE ]UNLOCK TABLES
Obsługę transakcji zapewniają tabele typu InnoDB i DBD.Domyślnie tabele InnoDB zapewniają powtarzalne odczyty, ale oczywiście można to zmienić.UWAGA! - SYSTEM DBMS SAM NAKŁADA BLOKADY NA TABELE (WIERSZE) PODCZAS WYKONYWANIA TRANSAKCJI.
Domyślnie MySQL działa w trybie AUTOCOMMIT. W trybie tym każda instrukcja jest traktowania jako transakcja.Żeby przejść w tryb jawnych transakcji należy ustawić AUTOCOMMIT na OFF, przy użyciu polecenia SET AUTOCOMMIT = [ 0 | 1 ].
Autor: KatMPB 51
Transakcje i blokowanie
MySQL i transakcje
Ciekawostka!
W PostgreSQL wpisanie polecenia BEGIN WORK powoduje przełączenie w tryb jawnych transakcji, a instrukcje COMMIT i ROLLBACK wyłączają ten tryb.
Blokowanie wierszy – ciekawostka dla programistów!
Polecenie poniżej zakłada blokadę na wiersze:
SELECT … FOR UPDATE; (SELECT 0 FROM customer WHERE customer_id = 15 FOR UPDATE;)
COMMIT lub ROLLBACK – zdejmuję blokadę.
Zakleszczenia – dwie sesje (transakcje) blokują się nawzajem - długie transakcje.
Autor: KatMPB 52
Dodatek
1. mysql -u użytkownik -p --html –tee=wynik.html
Polecenie to zapisuje np. wyniki instrukcji select do pliku wynik.html w postaci tabeli zgodnej ze standardem html 4.01.
2. Excel->Dane->ImportujDaneZewnętrzne.
Możliwość importowania danych z MySQL do Excela.
Autor: KatMPB 53
Ciastka, kawa i pytania.
Pytania można składać mailem: [email protected]
KatMPBWWW: http://katmpbsoft.blogspot.com