Databázy (2) Prednáška 03. Alexander Šimko
|
|
- Sophia Holt
- 6 years ago
- Views:
Transcription
1 Databázy (2) Prednáška 03 Alexander Šimko
2 Contents I Databázové transakcie
3 Section 1 Databázové transakcie
4 Transakcie Transakcia je postupnosť príkazov, ktoré vystupujú ako celok
5 Databázové transakcie Databázové transakcie sú transakcie nad databázovým systémom.
6 Motivácia Transakcie Motivácia void transfer(string from, String to, BigNumber amount) { } SELECT balance, overdraft FROM accounts WHERE number = from; if (overdraft == false && balance < amount) { throw new Exception("Insufficient balance"); } UPDATE accounts SET balance = balance - amount WHERE number = from; UPDATE accounts SET balance = balance + amount WHERE number = to;
7 Motivácia Transakcie Motivácia void transfer(string from, String to, BigNumber amount) { } SELECT balance, overdraft FROM accounts WHERE number = from; if (overdraft == false && balance < amount) { throw new Exception("Insufficient balance"); } UPDATE accounts SET balance = balance - amount WHERE number = from; // Co ak v tomto momente spadne databazove spojenie? UPDATE accounts SET balance = balance + amount WHERE number = to;
8 Atomickosť Transakcie Atomickosť (Atomicity) Buď sa vykonajú všetky príkazy v transakcii alebo žiaden
9 Atomickosť Transakcie - príkazy BEGIN, COMMIT a ROLLBACK BEGIN [TRANSACTION] začne novú transakciu ak je spustený už počas behu transakcie, vygeneruje varovanie, ale stav transakcie sa nezmení COMMIT [TRANSACTION] úspešne ukončí transakciu a vykonané zmeny sa potvrdia ROLLBACK [TRANSACTION] zruší aktuálne bežiacu transakciu všetky zmeny, ktoré boli vykonané od BEGIN sa zrušia
10 Atomickosť COMMIT Príklad data type value (A1) BEGIN; (A2) SELECT sum(value) FROM data WHERE type = 2; (A3) INSERT INTO data (type,value) VALUES (2,30); (A4) SELECT sum(value) FROM data WHERE type = 2; (A5) COMMIT; (B1) SELECT sum(value) FROM data WHERE type = 2;
11 Atomickosť ROLLBACK Príklad data type value (A1) BEGIN; (A2) SELECT sum(value) FROM data WHERE type = 2; (A3) INSERT INTO data (type,value) VALUES (2,30); (A4) SELECT sum(value) FROM data WHERE type = 2; (A5) ROLLBACK; (B1) SELECT sum(value) FROM data WHERE type = 2;
12 Atomickosť Čo ak spojenie skončí skôr než zavoláme COMMIT alebo ROLLBACK? Zmeny sa zrušia podobne ako keby sme zavolali ROLLBACK.
13 Atomickosť BEGIN, COMMIT a ROLLBACK Typické použitie void transfer(string from, String to, BigNumber amount) { BEGIN; try { SELECT balance, overdraft FROM accounts WHERE number = from; if (overdraft == false && balance < amount) { throw new Exception("Insufficient balance"); } UPDATE accounts SET balance = balance - amount WHERE number = from; UPDATE accounts SET balance = balance + amount WHERE number = to; COMMIT; } catch (Exception e) { ROLLBACK; throw e;} }
14 Atomickosť BEGIN, COMMIT a ROLLBACK Typické použitie void transfer(string from, String to, BigNumber amount) { BEGIN; try { SELECT balance, overdraft FROM accounts WHERE number = from; if (overdraft == false && balance < amount) { throw new Exception("Insufficient balance"); } UPDATE accounts SET balance = balance - amount WHERE number = from; // Ak tu padne spojenie, databazovy system nedostane COMMIT UPDATE accounts SET balance = balance + amount WHERE number = to; COMMIT; } catch (Exception e) { ROLLBACK; throw e;} }
15 Atomickosť Transakcie Chyby V prípade akejkoľvek chyby: syntaktická chyba porušené integritné obmedzenie,... sú všetky príkazy ignorované a systém čaká kým dostane: COMMIT alebo ROLLBACK. V oboch prípadoch transakciu zruší.
16 Atomickosť Transakcie Chyby (A1) BEGIN; (A2) INSERT INTO data (type,value) VALUES (2,30); (A3) SELECT * FROM; -- ERROR: syntax error at or near ";" (A4) SELECT sum(value) FROM data WHERE type = 2; -- ERROR: current transaction is aborted, commands ignored until end of transaction block (A5) COMMIT; -- ROLLBACK
17 Atomickosť Transakcie - Autocommit mód je vtedy, ak nepoužívame BEGIN a COMMIT explicitne každý príkaz beží vo vlastnej transakcii
18 Atomickosť JDBC a transakcie transakcie sa ovládajú metódami rozhrania Connection void setautocommit(boolean autocommit) nastaví spôsob vykonávania SQL príkazov true každý SQL príkaz beží v samotnej transakcii spôsobí, že príkaz BEGIN sa nebude posielať false príkazy sú zoskupené do transakcií (oddelených commit/rollback) tento príkaz samotný BEGIN ešte nepošle BEGIN sa posiela tesne pred spustením SQL príkazu, ak ešte nie sme v transakcii
19 Atomickosť JDBC a transakcie void setautocommit(boolean autocommit) ak meníme autocommit mód a transakcia beží, tak je transakcia commitnutá ak nemeníme autocommit mód, nič sa neudeje
20 Atomickosť JDBC a transakcie void commit() akceptuje transakciu (na pozadí pošle COMMIT) void rollback() zruší transakciu (na pozadí pošle ROLLBACK)
21 Atomickosť JDBC a transakcie Connection c = // nove spojenie Statement s = c.createstatement(); c.setautocommit(true); // nasledovne prikazy posielame v autocommit mode s.executeupdate("update accounts SET balance = 10"); // poslal sa iba UPDATE, ziaden BEGIN ani COMMIT s.executeupdate("update accounts SET balance = 20"); // opat sa poslal iba UPDATE, ziaden BEGIN ani COMMIT
22 Atomickosť JDBC a transakcie c.setautocommit(false); // rusime autocommit mode // BEGIN sa este neposlal // transakcia este nebezi s.executeupdate("update accounts SET balance = 30"); // teraz sa poslal aj BEGIN aj UPDATE // uz bezime v transakcii s.executeupdate("update accounts SET balance = 40"); // uz sme v transakcii, takze sa teraz poslal iba UPDATE c.commit(); // teraz sa poslal COMMIT // uz nebezime v transakcii s.executeupdate("update accounts SET balance = 50"); // kedze nie sme v autocommit mode a transakcia nebezi // posle sa BEGIN aj UPDATE // bezime v dalsej transakcii
23 Atomickosť JDBC a transakcie c.setautocommit(true); // transakcia bezi, takze toto spusti COMMIT // transakcia je ukoncena // nasledovne prikazy posielame v autocommit mode s.executeupdate("update accounts SET balance = 60"); // poslal sa iba UPDATE, ziaden BEGIN ani COMMIT s.executeupdate("update accounts SET balance = 70"); // opat sa poslal iba UPDATE, ziaden BEGIN ani COMMIT
24 Atomickosť Transakcie Ako sa dosahuje atomicita? databázový systém každú operáciu pred vykonaním zaloguje: redo log zapíše sa záznam, ktorý obsahuje info o tom, čo sa zmenilo (nové hodnoty, ktoré riadky sa zmazali,...) undo log zapíše sa záznam, ktorý hovorí ako dostaneme databázu do stavu pred vykonaním operácie (ktoré riadky musíme pridať, zmazať, aké boli pôvodné hodnoty) v prípade rollbacku vie aplikovaním undo logu vrátiť databázu do pôvodného stavu v prípade výpadku vie potom podľa redo logu operácie buď zopakovať alebo podľa undo logu vrátiť databázu do pôvodného stavu
25 Atomickosť Transakcie Atomicita Ako dopadne nasledovný príkaz? Majme pázdnu tabuľku vytvorenú príkazom CREATE TABLE test ( x integer CHECK(x > 0) ) Predpokladajme, že spojenie je v autocommit móde a spustíme príkaz INSERT INTO test(x) VALUES (1), (-1) Ako bude vyzerať tabuľka?
26 Atomickosť Transakcie Atomicita Ako dopadne nasledovný príkaz? Tabuľka bude prázdna autocommit mód jeden príkaz je jedna transakcia celý príkaz buď prejde, alebo celý neprejde keďže časť príkazu neprejde, tak neprejde celý príkaz
27 Trvanlivosť Transakcie Trvanlivosť (Durability) vykonaním COMMIT musia prežiť zmeny vykonané transakciou aj keby hneď na to databázový systém celý padol dáta, ktoré sú zapísané zatiaľ iba vo vyrovnávacích pamätiach sa musia zapísať do trvalej pamäte (na disk)
28 Konzistentnosť Transakcie Konzistentnosť (Consistency) po skončení transakcii sú splnené všetky integritné obmedzenia ak by transakcia mala porušiť nejaké integritné obmedzenie, transakcia sa zruší
29 Konzistentnosť Odložiteľné integritné obmedzenia Pri vytváraní integritného obmedzenia môžeme uviesť NOT DEFERRABLE integritné obmedzenie sa bude kontrolovať vždy po vykonaní príkazu modifikujúceho databázu (toto je default) DEFERRABLE kontrola integritného obmedzenia sa dá odložiť na koniec transakie Tieto sa dajú odložiť (v PostgreSQL) UNIQUE, PRIMARY KEY, FOREIGN KEY/REFERENCES Tieto sa nedajú odložiť (v PostgreSQL) NOT NULL, CHECK
30 Konzistentnosť Odloženie integritných obmedzení SET CONSTRAINTS nazov_obmedzenia_1,..., nazov_obmedzenia_n mod SET CONSTRAINTS ALL mod zvoleným/všetkým DEFERRABLE integritným obmedzeniam nastaví zadaný mód kontroly zmena platí v rámci aktuálnej transakcie kde mod je IMMEDIATE integritné obmedzenie sa skontroluje po vykonaní príkazu, ktorý modifikuje dáta DEFERRED integritné obmedzenie sa skontroluje na konci transakcie
31 Konzistentnosť Default správanie Ak nepoužijeme SET CONSTRAINTS, použije sa to, čo sme zadali pri vytváraní integritného obmedzenia: INITIALLY IMMEDIATE integritné obmedzenie sa skontroluje po vykonaní príkazu, ktorý modifikuje dáta (toto je default) INITIALLY DEFERRED integritné obmedzenie sa skontroluje na konci transakcie
32 Konzistentnosť Odloženie integritných obmedzení Príklad CREATE TABLE main (id integer PRIMARY KEY, val integer); CREATE TABLE sub (id integer, ref integer REFERENCES main DEFERRABLE INITIALLY IMMEDIATE); BEGIN; INSERT INTO sub(id, ref) VALUES (10, 1); -- zlyha tu INSERT INTO main(id, val) VALUES (1,100); COMMIT; BEGIN; SET CONSTRAINTS ALL DEFERRED; INSERT INTO sub(id, ref) VALUES (10, 1); INSERT INTO main(id, val) VALUES (1, 100); COMMIT; -- zbehne v poriadku
33 Konzistentnosť Odloženie integritných obmedzení Kedy to pomôže? Pri komplexných vzťahoch (zložených objektoch) do kolekcie si odložíme veľa inštancií Row Data Gateway potom ich chceme v cykle uložiť do DB nemusíme sa starať, či sú v správnom poradí toto je samozrejme možné iba ak vieme dopredu idčka keď budeme preberať Data Mapper sa to ukáže ako veľmi vhodné
34 Platnosť dát Dáta môžeme považovať za platné až keď prejde COMMIT CRATE TABLE test ( x integer UNIQUE DEFERRABLE INITIALLY DEFERRED ); BEGIN; INSERT INTO (x) VALUES (10), (10); -- zbehne SELECT count(*) FROM TEST; -- zbehne a vrati 2 COMMIT; -- padne to az tu, cize vysledok z prechadzajuceho kroku musime zahodit
35 Platnosť dát Dáta môžeme považovať za platné až keď prejde COMMIT CRATE TABLE test ( x integer UNIQUE DEFERRABLE INITIALLY DEFERRED ); BEGIN; INSERT INTO (x) VALUES (10), (10); -- zbehne SELECT count(*) FROM TEST; -- zbehne a vrati 2 COMMIT; -- padne to az tu, cize vysledok z prechadzajuceho kroku musime zahodit získané dáta nemôžeme považovať za platné pokiaľ nezbehne COMMIT čiže pozor, kedy prečítané dáta posielame externým systémom
36 Transakcie Čo ďalšie by sa mohlo pokaziť? void transfer(string from, String to, BigNumber amount) { BEGIN; try { SELECT balance, overdraft FROM accounts WHERE number = from; if (overdraft == false && balance < amount) { throw new Exception("Insufficient balance"); } UPDATE accounts SET balance = balance - amount WHERE number = from; UPDATE accounts SET balance = balance + amount WHERE number = to; COMMIT; } catch (SQLException e) { ROLLBACK; throw e;} }
37 Transakcie Čo ďalšie by sa mohlo pokaziť? void transfer(string from, String to, BigNumber amount) { BEGIN; try { SELECT balance, overdraft FROM accounts WHERE number = from; if (overdraft == false && balance < amount) { throw new Exception("Insufficient balance"); } // Co ak v tomto momente ina transakcia vyberie vsetky peniaze? UPDATE accounts SET balance = balance - amount WHERE number = from; UPDATE accounts SET balance = balance + amount WHERE number = to; COMMIT; } catch (SQLException e) { ROLLBACK; throw e;} }
38 Transakcie (Isolation) izolovanie transakcie od zmien realizovaných súbežne bežiacími transakciami existuje viacero stupňov izolovanosti ideál: akokeby naraz bežala iba jedna transakcia
39 Transakcie Východiská program posiela databázovému systému jednotlivé príkazy postupne táto postupnosť vo všeobecnosti nie je dopredu daná napr. program spúšta príkazy v if-e na základe nejakej podmienky databázový systém teda v žiadnom momente nemôže vedieť, aké prikazy budú nasledovať
40 Transakcie Východiská preto databázový systém spúšta príkazy tak ako prichádzajú, plus vykonáva opatrenia na zabezpečenie izolovanosti vykonávanie opatrení znižuje výkonnosť systému nie vždy potrebujeme plnú izolovanosť preto máme viac úrovní izolovanosti
41 Transakcie Úrovne izolovanosti PostgreSQL má tieto Read Commited Repeatable read Serializable každá úroveň chráni pred neželanými javmi istého typu
42 Ako DBS implementuje izolovanosť? zamykanie multiversioning
43 Ako DBS implementuje izolovanosť? Zamykanie dáta, ku ktorým transakcia pristupuje, sa zamknú tým pádom k nim nemôže pristúpiť nikto iný keď transakcia už dáta nepotrebuje, tak ich odomkne
44 Zamykanie Zopakovanie Row[] array; void a(int index) { array[index].col1 *= 2; array[index].col2++; } int b() { int sum = 0; for (int i=0; i<array.length; ++i) { sum += array[i].col1 - array[i].col2; } return sum; }
45 Zamykanie Zopakovanie Row[] array; Lock arraylock; void a(int index) { arraylock.lock(); // zamkli sme, ostatni budu na prikaze arraylock.lock() cakat array[index].col1 *= 2; array[index].col2++; arraylock.unlock(); // povolime, aby niekto dalsi presiel cez arraylock.lock() } int b() { arraylock.lock(); int sum = 0; for (int i=0; i<array.length; ++i) { sum += array[i].col1 - array[i].col2; } arraylock.unlock(); return sum; }
46 Zamykanie Problém Row[] array; Lock arraylock; void a(int index) { arraylock.lock(); array[index].col1 *= 2; array[index].col2++; arraylock.unlock(); } Toto riešenie nám neumožňuje paralelne aktualizovať prvky na rôznych indexoch
47 Zamykanie Zámok pre každý prvok Row[] array; Lock[] locks; void a(int index) { locks[index].lock(); array[index].col1 *= 2; array[index].col2++; locks[index].unlock(); } int b() { for (int i=0;i<array.length;++i) {locks[i].lock();} int sum = 0; for (int i=0; i<array.length;++i) { sum += array[i].col1 - array[i].col2; } for (int i=0;i<array.length;++i){locks[i].unlock();} return sum; }
48 V DB sa môže zamykať tabuľka ako celok iba vybrané riadky diskové bloky
49 Zamykanie Problém 2 Row[] array; Lock[] locks; int b() { for (int i=0;i<array.length;++i) {locks[i].lock();} int sum = 0; for (int i=0; i<array.length;++i) { sum += array[i].col1 - array[i].col2; } for (int i=0;i<array.length;++i){locks[i].unlock();} } return sum; Toto riešenie nám neumožňuje spustiť b() 2x paralelne, hoci dáta iba číta
50 Zamykanie Viac módov zamykania Row[] array; ReadWriteLock[] locks; //zamky ineho typu void a(int index) { locks[index].writelock().lock(); // zamkli sme na zapis // ine citanie ani zapis nebude povolene array[index].cal1 *= 2; array[index].cal2++; locks[index].writelock().unlock(); // vsetkych odomkneme } int b() { for (int i=0;i<array.length;++i) {locks[i].readlock().lock();} // zamkli sme na citanie - zapisy nie su povolene, citania ano int sum = 0; for (int i=0; i<array.length;++i) { sum += array[i].col1 - array[i].col2; } for (int i=0;i<array.length;++i){locks[i].readlock().unlock();} return sum; }
51 Zamykanie Ako sa módy vylučujú read write read ok x write x x
52 V DB je módov oveľa viac Módy riadkových zámkov FOR UPDATE FOR NO KEY UPDATE FOR SHARE FOR KEY SHARE Módy tabuľkových zámkov ACCESS SHARE ROW SHARE ROW EXCLUSIVE SHARE UPDATE EXCLUSIVE SHARE SHARE ROW EXCLUSIVE EXCLUSIVE ACCESS EXCLUSIVE Každý mód má zoznam ostatných módov, s ktorými sa vylučuje
53 V DB je módov oveľa viac Ani PostgreSQL dokumentácia poriadne nehovorí, na čo ktorý mód slúži:(
54 V DB je módov oveľa viac Zhruba je to o tom: čítanie dát musí vylúčiť modifikácie nad čítanými riadkami aktualizovanie dát musí vylúčiť zápisy nad modifikovanými riadkami modifikovanie štruktúry tabuľky musí vylúčiť všetky čítania a zmeny na tabuľke a jej dátach...
55 Zamykanie pesimistické vs optimistické BEGIN; UPDATE data SET value = 30 WHERE value = 50; COMMIT; Row[] array; for (int i = 0; i < array.length; ++i) { if (array[i].value == 50) { array[i].value = 30; } }
56 Zamykanie pesimistické Row[] array; Lock[] locks; for (int i = 0; i < array.length; ++i) { // pri pesimistickom zamykani zamkneme hned // bez ohladu na mod, nikto nemoze riadok zmenit // aj keby to bol riadok, o ktory nemame zaujem locks[i].lock(); if (array[i].value == 50) { array[i].value = 30; } locks[i].unlock(); } dôsledkom je, že sme zamkli každý riadok niektoré aj zbytočne (nemenili sme ich) znižujeme výkon systému
57 Zamykanie optimistické Row[] array; Lock[] locks; for (int i = 0; i < array.length; ++i) { // pri citani nezamykame vobec if (array[i].value == 50) { // zamkneme az ideme zapisovat locks[i].lock(); // testujeme opat, lebo medzitym mohol niekto zmenit hodnotu if (array[i].value == 50) { array[i].value = 30; } locks[i].unlock(); } } znížili sme počet zamykaní lepší výkon systému
58 V DB sa zámky odomykajú vždy až na konci transakcii
59 Ako DBS implementuje izolovanosť? Multiversioning Predpokladajme dve transakcie: A: BEGIN; UPDATE data SET value = 30 WHERE value = 50; COMMIT; B: BEGIN; SELECT sum(value) FROM data; COMMIT; }
60 Ako DBS implementuje izolovanosť? Multiversioning transakcia B iba číta dáta nepotrebuje ostatným zakázať zapisovanie ak bude vidieť dáta ako vyzerali pred tým, než začalo zapisovanie to vieme docieliť napr. pomocou undo logu, ukladadím rôznych verzií riadkov Multiversioning umožňuje transakciám vidieť dáta v rôznych časových bodoch (verziách) redukuje množstvo zamykania
61 Špinavé čítanie (dirty read) Transakcia prečíta necommitnuté dáta zapísané inou transakciou (špinavé dáta)
62 Javy Špinavé čítanie (dirty read) data type value (A1) BEGIN; (B1) BEGIN; (B2) INSERT INTO data (type,value) VALUES (2,30); (A2) SELECT SUM(value) AS x FROM data WHERE type = 2; ak A2 prečíta 330, ide o špinavé čítanie ak A2 prečíta 300, neide o špinavé čítanie
63 Javy Špinavé čítanie (dirty read) data type value (A1) BEGIN; (B1) BEGIN; (B2) INSERT INTO data (type,value) VALUES (2,30); (B3) COMMIT; (A2) SELECT SUM(value) AS x FROM data WHERE type = 2; teraz ak A2 prečíta 330, o špinavé čítanie už neide, lebo (B3) commitla dáta
64 PostgreSQL Úroveň Read Commited Chráni transakciu pred špinavým čítaním
65 PostgreSQL Úroveň Read Commited Ako funguje? INSERT zamkne čo potrebuje a vloží nové riadky SELECT nevidí aktuálnu verziu databázy ale rekonštruovanú berú sa zmeny commitnuté inými transakciami pred spustením príkazu berú sa aj zmeny vykonané aktuálnou transakciou nekommitnuté zmeny vykonané inými transakciami alebo commitnuté inými transakciami po tom, čo sa príkaz začal vykonávať, sú ignorované
66 PostgreSQL Úroveň Read Commited Ako funguje? UPDATE, DELETE 1. Vyberie riadky, ktoré spĺňajú WHERE podmienku tu platí to isté, čo pre SELECT. 2. Zamkne tieto riadky na zápis ak iná transakcia zapisuje, tak aktuálna čaká, kým commitne alebo rollbackne. 3. Prechádza riadky a vykonáva zmenu tu môže zistiť, že sa riadky zmenili, lebo medzi krokom 1 a 2 commitla iná transakcia. Použije novú verziu riadkov a prekontroluje, či WHERE podmienka je stále splnená. Zmazané riadky ignoruje. 4. Riadky sa neodomykajú odomykajú sa až na konci transakcie.
67 PostgreSQL Úroveň Read Commited Problém Nechráni nás už pred neopakovateľným čítaním.
68 Javy neopakovateľné čítanie (nonrepeatable read) transakcia opätovne prečíta riadky, ktoré už raz čítala zistí, že dáta sú iné než pri predchádzajúcom čítaní a dáta boli zmenené transakciou, ktorá medzičasom bola akceptovaná (COMMIT)
69 Javy neopakovateľné čítanie (nonrepeatable read) data type value (A1) BEGIN; (A2) SELECT SUM(value) AS x FROM data WHERE type = 2; -- x = 300 (B1) BEGIN; (B2) UPDATE data SET value = 300 WHERE value = 200; (B3) COMMIT; (A3) SELECT SUM(value) as y FROM data WHERE type = 2; -- y = 300 alebo y = 400? ak A3 prečíta 400, ide o neopakovateľné čítanie ak A3 prečíta 300, neide o neopakovateľné čítanie
70 Javy neopakovateľné čítanie (nonrepeatable read) websites id hits (A1) BEGIN; (A2) UPDATE websites SET hits = hits + 1; (A3) END; (B1) BEGIN; (B2) DELETE FROM websites WHERE hits = 10; (B3) END;
71 Javy neopakovateľné čítanie (nonrepeatable read) websites id hits (A2) UPDATE websites SET hits = hits + 1; (B2) DELETE FROM websites WHERE hits = 10; Môže to dopadnúť takto: 1. Začne A2, uzamkne oba riadky. 2. Zhehne WHERE časť B2, ktorá vidí pôvodnú tabuľku. Vyberie druhý riadok. 3. DELETE časť B2 čaká, lebo riadky sú zamknuté. 4. A commitne. Nové hodnoty stĺpca hits sú 10 a Pokračuje B2. Zistí, že druhý riadok už nespĺňa pôvodnú podmienku a teda ho ignoruje.
72 Javy neopakovateľné čítanie (nonrepeatable read) websites id hits (A2) UPDATE websites SET hits = hits + 1; (B2) DELETE FROM websites WHERE hits = 10; Môže to dopadnúť takto: Nové hodnoty stĺpca hits sú 10 a 11. Žiaden riadok nebol zmazaný, hoci aj predtým aj potom máme riadok spĺňajúci podmienku. B2 čítal ten istý riadok 2x, no ten medzitým zmenila commitnutá transakcia.
73 PostgreSQL Úroveň Repeatable Read Chráni nás pred neopakovateľným čítaním
74 PostgreSQL Úroveň Repeatable Read Ako funguje? podobne ako Read Commited až na 2 zmeny INSERT zamkne čo potrebuje a vloží nové riadky SELECT nevidí aktuálnu verziu databázy ale rekonštruovanú berú sa zmeny commitnuté inými transakciami pred začiatkom transakcie berú sa aj zmeny vykonané aktuálnou transakciou nekommitnuté zmeny vykonané inými transakciami alebo commitnuté inými transakciami po začiatku transakcie sú ignorované ako začiatok sa berie prvý príkaz po príkaze BEGIN
75 PostgreSQL Úroveň Repeatable Read Ako funguje? UPDATE, DELETE 1. Vyberie riadky, ktoré spĺňajú WHERE podmienku tu platí to isté, čo pre SELECT. 2. Zamkne tieto riadky na zápis ak iná transakcia zapisuje, tak aktuálna čaká, kým commitne alebo rollbackne. 3. Prechádza riadky a vykonáva zmenu tu môže zistiť, že sa riadky zmenili, lebo medzi začiatkom transakcie a bodom 2 commitla iná transakcia. V prípade, že sa riadky reálne zmenili alebo boli zmazané, aktuálna transakcia je zrušená s chybou serialization_failure 4. Riadky sa neodomykajú odomykajú sa až na konci transakcie.
76 PostgreSQL Úroveň Repeatable Read Ako funguje? hraničný prípad ako garantovať túto úroveň izolovanosti je transakciu zrušiť musíme byť teda pripravení transakciu opätovne spustiť
77 PostgreSQL Repeatable read Príklad websites id hits (A2) UPDATE websites SET hits = hits + 1; (B2) DELETE FROM websites WHERE hits = 10; Môže to dopadnúť takto: 1. Začne A2, uzamkne oba riadky. 2. Zhehne WHERE časť B2, ktorá vidí pôvodnú tabuľku. Vyberie druhý riadok. 3. DELETE časť B2 čaká, lebo riadky sú zamknuté. 4. A commitne. Nové hodnoty stĺpca hits sú 10 a Pokračuje B2. Zistí, že druhý riadok bol zmenený a teda transakciu B zruší.
78 PostgreSQL Repeatable read Príklad Opätovne spustíme transakciu B websites id hits (B2) DELETE FROM websites WHERE hits = 10; 1. Transakcia B teraz vidí od začiatku nové hodnoty. 2. Transakcia A už je ukončená, takže k žiadnej interakcii nedôjde. 3. B úspešne skončí.
79 PostgreSQL Repeatable read Príklad websites id hits 2 11
80 PostgreSQL Úroveň Repeatable Read Problém Nechráni už pred serializačnou anomáliou
81 Serializačná anomália (serialization anomaly) Výsledok transakcií bude iný, akokeby boli spustené jedna po druhej
82 Serializačná anomália data type value (A1) BEGIN; (A2) SELECT SUM(value) AS x FROM data WHERE type = 1; (A3) INSERT INTO data (type,value) VALUES (2,x); (A4) COMMIT; (B1) BEGIN; (B2) SELECT SUM(value) AS y FROM data WHERE type = 2; (B3) INSERT INTO data (type,value) VALUES (1,y); (B4) COMMIT;
83 Serializačná anomália Prípustná možnosť AB data type value (A1) BEGIN; (A2) SELECT SUM(value) AS x FROM data WHERE type = 1; (A3) INSERT INTO data (type,value) VALUES (2,x); -- (2,30) (A4) COMMIT; (B1) BEGIN; (B2) SELECT SUM(value) AS y FROM data WHERE type = 2; (B3) INSERT INTO data (type,value) VALUES (1,y); -- (1,330) (B4) COMMIT;
84 Serializačná anomália Prípustná možnosť BA data type value (B1) BEGIN; (B2) SELECT SUM(value) AS y FROM data WHERE type = 2; (B3) INSERT INTO data (type,value) VALUES (1,y); -- (1,300) (B4) COMMIT; (A1) BEGIN; (A2) SELECT SUM(value) AS x FROM data WHERE type = 1; (A3) INSERT INTO data (type,value) VALUES (2,x); -- (2,330) (A4) COMMIT;
85 Serializačná anomália Problémový prípad data type value (A1) BEGIN; (B1) BEGIN; (A2) SELECT SUM(value) AS x FROM data WHERE type = 1; (B2) SELECT SUM(value) AS y FROM data WHERE type = 2; (A3) INSERT INTO data (type,value) VALUES (2,x); -- (2,30) (B3) INSERT INTO data (type,value) VALUES (1,y); -- (1,300) (A4) COMMIT; (B4) COMMIT;
86 Serializačná anomália Rekapitulácia AB (1,330) (2,30) BA (1,300) (2,330) problémový prípad (1,300) (2,30)
87 PostgreSQL Úroveň Serializable Chráni nás pred serializačnou anomáliou
88 PostgreSQL Úroveň Serializable Ako funguje? ako Repeatable Read navyše pri čítaní riadkov si pre transakciu uchovávame podmienky, podľa ktorých sme riadky vyberali potom pri kommitnutí iných transakcií vieme skontrolovať, či menené dáta spôsobia zmenu výsledkov už vykonaných príkazov aktuálnej transakcie ak k tomu dôjde, aktuálna transakcia je zrušená s chybou serialization_failure
89 PostgreSQL Úroveň Serializable Príklad data type value (A1) BEGIN; (B1) BEGIN; (A2) SELECT SUM(value) AS x FROM data WHERE type = 1; -- pre A sa zapamata podmienka P1: type = 1 (B2) SELECT SUM(value) AS y FROM data WHERE type = 2; -- pre B sa zapamata podmienka P2: type = 2 (A3) INSERT INTO data(type,value) VALUES (2,x); -- (2,30) (B3) INSERT INTO data(type,value) VALUES (1,y); -- (1,300) (A4) COMMIT; -- A uspesne prebehne (B4) COMMIT; -- A menila data, na ktorych B zavisi. B je zrusena.
90 PostgreSQL Úroveň Serializable Príklad Opätovne spustíme B. data type value (B1) BEGIN; (B2) SELECT SUM(value) AS y FROM data WHERE type = 2; (B3) INSERT INTO data(type,value) VALUES (1,y); -- (1,330) (B4) COMMIT;
91 PostgreSQL Úroveň Serializable Príklad data type value
92 PostgreSQL Úroveň Serializable je to najvyšší stupeň izolovanosti garantuje, že výsledok vykonania transakcií bude taký, akokeby sme ich vykonávali jednu po druhej umožňuje zjednodušiť vývoj aplikácie ak vieme garantovať, že každá transakcia sama o sebe urobí korektnú vec, potom aj kolekcia transakcií s úrovňou Serializable urobí korektnú vec
93 Fantómové čítanie (phantom read) transakcia získa riadky spĺňajúce nejakú podmienku opätovné získanie s tou istou podmienkou vráti tie isté riadky, plus nejaké navyše
94 Fantómové čítanie (phantom read) data type value (A1) BEGIN; (A2) SELECT SUM(value) AS X FROM data WHERE type = 2; -- X = 300 (B1) BEGIN; (B2) INSERT INTO data (type,value) VALUES (2, 300); (B3) COMMIT; (A3) SELECT SUM(value) AS Y FROM data WHERE type = 2; ak A3 vráti 600, ide o fantómové čítanie ak A3 vráti 300, neide o fantómové čítanie neide o neopakovateľné čítanie už čítané riadky sa nezmenili
95 To o izolovanosti doteraz bolo o tom ako izolovanosť implementuje PostgreSQL
96 Štandard definuje úrovne izolovanosti cez javy, ktoré môžu nastať úroveň čítanie serializačná špinavé neop. fantómové anomália Read uncommitted áno* áno áno áno Read committed nie áno áno áno Repeatable read nie nie áno* áno Serializable nie nie nie nie keď si v PostgreSQL vyžiadame Read uncommited, dostaneme Read commited * SQL špecifikácia ich povoľuje, no v PostgreSQL nenastanú v PostgreSQL je default Read Committed
97 Úrovne izolovanosti štandard ich definuje vo forme javov, ktoré nemôžu nastať nie je jednoznačný v definícii javov existujúce databázové systémy ich implementujú rôzne a rôznia sa v správani
98 Úrovne izolovanosti Ako ich vybrať BEGIN [TRANSACTION] ISOLATION LEVEL uroven kde uroven je READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE
99 Úroveň izolovanosti JDBC Rozhranie Connection void settransactionisolation(int level) nastaví danú úroveň izolovanosti ovplyvňuje, čo sa pošle v BEGIN ISOLATION LEVEL treba volať pred začiatkom transakcie, inač hodí výnimku kde level je Connection.TRANSACTION_READ_UNCOMMITTED Connection.TRANSACTION_READ_COMMITTED Connection.TRANSACTION_REPEATABLE_READ Connection.TRANSACTION_SERIALIZABLE
100 Každá transakcia môže mať inú izolovanosť izolovanosť je vlastnosť konkrétnej transakcie hovorí vlastne, čo daná transakcia vidí tiež hovorí aké kontroly sa robia nad danou transakciou ak sú tieto kontroly porušené, transakcia sa zruší ostatné transakcie, ktoré ale mohli byť dôvodom zrušenia transakcie nie sú nijako dotknuté tiež nehovorí, či zmeny aktuálnej transakcie vidia iné transakcie to je dané ich úrovňou izolácie
101 Každá transakcia môže mať inú izolovanosť A serializable B read uncommited A vidí databázu pred B alebo po B B vidí zmeny aj počas toho ako ich A robí ak by sa malo stať niečo zlé, A bude zrušená
102 Zablokovanie Zablokovanie (Deadlock) dve transakcie čakajú na seba kvôli zámkom môže sa stať pri každej úrovni izolovanosti PostgreSQL deteguje zablokovania jednu transakciu zruší s chybou 40P01 deadlock_detected druhá pobeží ďalej Musíme byť pripravení zrušenú transakciu opätovne spustiť
103 Zablokovanie Zablokovanie Príklad (A1) BEGIN;
104 Zablokovanie Zablokovanie Príklad (A1) BEGIN; (B1) BEGIN;
105 Zablokovanie Zablokovanie Príklad (A1) BEGIN; (B1) BEGIN; (A2) UPDATE test SET x = 10 WHERE id = 1; --zamkne riadok 1 pre A
106 Zablokovanie Zablokovanie Príklad (A1) BEGIN; (B1) BEGIN; (A2) UPDATE test SET x = 10 WHERE id = 1; --zamkne riadok 1 pre A (B2) UPDATE test SET x = 10 WHERE id = 2; --zamkne riadok 2 pre B
107 Zablokovanie Zablokovanie Príklad (A1) BEGIN; (B1) BEGIN; (A2) UPDATE test SET x = 10 WHERE id = 1; --zamkne riadok 1 pre A (B2) UPDATE test SET x = 10 WHERE id = 2; --zamkne riadok 2 pre B (B3) UPDATE test SET x = 10 WHERE id = 1; --caka na A
108 Zablokovanie Zablokovanie Príklad (A1) BEGIN; (B1) BEGIN; (A2) UPDATE test SET x = 10 WHERE id = 1; --zamkne riadok 1 pre A (B2) UPDATE test SET x = 10 WHERE id = 2; --zamkne riadok 2 pre B (B3) UPDATE test SET x = 10 WHERE id = 1; --caka na A (A3) UPDATE test SET x = 10 WHERE id = 2; --caka na B
109 Zablokovanie Zablokovanie Príklad (A1) BEGIN; (B1) BEGIN; (A2) UPDATE test SET x = 10 WHERE id = 1; --zamkne riadok 1 pre A (B2) UPDATE test SET x = 10 WHERE id = 2; --zamkne riadok 2 pre B (B3) UPDATE test SET x = 10 WHERE id = 1; --caka na A (A3) UPDATE test SET x = 10 WHERE id = 2; --caka na B -- PostgreSQL deteguje deadlock, zrusi napr. transakciu A
110 Zablokovanie Zablokovanie Príklad (A1) BEGIN; (B1) BEGIN; (A2) UPDATE test SET x = 10 WHERE id = 1; --zamkne riadok 1 pre A (B2) UPDATE test SET x = 10 WHERE id = 2; --zamkne riadok 2 pre B (B3) UPDATE test SET x = 10 WHERE id = 1; --caka na A (A3) UPDATE test SET x = 10 WHERE id = 2; --caka na B -- PostgreSQL deteguje deadlock, zrusi napr. transakciu A -- Tym padom riadky zamknute pre A su odomknute
111 Zablokovanie Zablokovanie Príklad (A1) BEGIN; (B1) BEGIN; (A2) UPDATE test SET x = 10 WHERE id = 1; --zamkne riadok 1 pre A (B2) UPDATE test SET x = 10 WHERE id = 2; --zamkne riadok 2 pre B (B3) UPDATE test SET x = 10 WHERE id = 1; --caka na A (A3) UPDATE test SET x = 10 WHERE id = 2; --caka na B -- PostgreSQL deteguje deadlock, zrusi napr. transakciu A -- Tym padom riadky zamknute pre A su odomknute -- B moze pokracovat
112 Zablokovanie Zablokovanie Príklad (A1) BEGIN; (B1) BEGIN; (A2) UPDATE test SET x = 10 WHERE id = 1; --zamkne riadok 1 pre A (B2) UPDATE test SET x = 10 WHERE id = 2; --zamkne riadok 2 pre B (B3) UPDATE test SET x = 10 WHERE id = 1; --caka na A (A3) UPDATE test SET x = 10 WHERE id = 2; --caka na B -- PostgreSQL deteguje deadlock, zrusi napr. transakciu A -- Tym padom riadky zamknute pre A su odomknute -- B moze pokracovat (B4) COMMIT; -- riadky zamknute pre B su odomknute
113 Čo je to ACID Transakcie ACID Spomenuté vlastnosti transakcií sa označujú skratkou ACID: Atomicity Consistency Isolation Durability
114 Špeciality Transakcie Výnimočné správanie niektoré typy a funkcie majú výnimočné správanie voči transakciám
115 Špeciality Transakcie Dátum a čas CURRENT_TIME CURRENT_DATE CURRENT_TIMESTAMP vždy vráti čas/dátum začiatku transakcie čiže ich opätovné volanie v rámci transakcie vráti tú istú hodnotu transakcia je atomická, čiže akokeby zbehla v jednom okamihu platí pre všetky úrovne izolácie
116 Špeciality Transakcie Typ serial serial hodnota počítadla, ktoré je za ním je viditeľná okamžite všetkým transakciám nevzťahuje sa na neho rollback inač by vznikali kolízie
117 Špeciality Transakcie a príkazy na definíciu dát PostgreSQL v transakciách podporuje príkazy na úpravu štruktúry tabuliek (CREATE TABLE, ALTER TABLE,...) zmeny štruktúry tabuliek sú akceptované až príkazom COMMIT tým pádom vieme odvolať (rollback) aj pridanie, zmazanie stĺpca, vytvorenie, zmazanie tabuľky vhodné ako ochrana proti ľudskej chybe, keď robíme ručne nejaké zmeny Iné systémy nie všetky to podporujú pri prvom príkaze, ktorý mení štruktúru tabuľky (CREATE TABLE, ALTER TABLE,...) ukončia predchádzajúcu transakciu
118 Špeciality Koniec Koniec
Databázy (1) Prednáška 11. Alexander Šimko
Databázy (1) Prednáška 11 Alexander Šimko simko@fmph.uniba.sk Contents I Aktualizovanie štruktúry databázy Section 1 Aktualizovanie štruktúry databázy Aktualizácia štruktúry databázy Štruktúra databázy
More informationSpájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)
Spájanie tabuliek Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) 2011-2016 Úvod pri normalizácii rozdeľujeme databázu na viacero tabuliek prepojených cudzími kľúčmi SQL umožňuje tabuľky opäť spojiť
More informationDatabázové systémy. SQL Window functions
Databázové systémy SQL Window functions Scores Tabuľka s bodmi pre jednotlivých študentov id, name, score Chceme ku každému doplniť rozdiel voči priemeru 2 Demo data SELECT * FROM scores ORDER BY score
More informationDatabázy (1) Prednáška 08. Alexander Šimko
Databázy (1) Prednáška 08 Alexander Šimko simko@fmph.uniba.sk Contents I Subqueries (poddopyty) konštrukcia WITH Section 1 Subqueries (poddopyty) Subquery (poddopyt) Použitie SELECTu na mieste, kde sme
More informationkucharka exportu pro 9FFFIMU
požiadavky na export kodek : Xvid 1.2.1 stable (MPEG-4 ASP) // výnimočne MPEG-2 bitrate : max. 10 Mbps pixely : štvorcové (Square pixels) rozlíšenie : 1920x1080, 768x432 pre 16:9 // výnimočne 1440x1080,
More informationConstraint satisfaction problems (problémy s obmedzujúcimi podmienkami)
I2AI: Lecture 04 Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami) Lubica Benuskova Reading: AIMA 3 rd ed. chap. 6 ending with 6.3.2 1 Constraint satisfaction problems (CSP) We w
More informationVYLEPŠOVANIE KONCEPTU TRIEDY
VYLEPŠOVANIE KONCEPTU TRIEDY Typy tried class - definuje premenné a metódy (funkcie). Ak nie je špecifikovaná inak, viditeľnosť členov je private. struct - definuje premenné a metódy (funkcie). Ak nie
More informationCSE 530A ACID. Washington University Fall 2013
CSE 530A ACID Washington University Fall 2013 Concurrency Enterprise-scale DBMSs are designed to host multiple databases and handle multiple concurrent connections Transactions are designed to enable Data
More informationAnycast. Ľubor Jurena CEO Michal Kolárik System Administrator
Anycast Ľubor Jurena CEO jurena@skhosting.eu Michal Kolárik System Administrator kolarik@skhosting.eu O nás Registrátor Webhosting Serverové riešenia Správa infraštruktúry Všetko sa dá :-) Index Čo je
More informationSQL: Transactions. Announcements (October 2) Transactions. CPS 116 Introduction to Database Systems. Project milestone #1 due in 1½ weeks
SQL: Transactions CPS 116 Introduction to Database Systems Announcements (October 2) 2 Project milestone #1 due in 1½ weeks Come to my office hours if you want to chat about project ideas Midterm in class
More informationPoradové a agregačné window funkcie. ROLLUP a CUBE
Poradové a agregačné window funkcie. ROLLUP a CUBE 1) Poradové a agregačné window funkcie 2) Extrémy pomocou DENSE_RANK(), TOP() - Príklady 3) Spriemernené poradia 4) Kumulatívne súčty 5) Group By a Datepart,
More informationJazyk SQL. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)
Jazyk SQL Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) 2011-2016 Jazyk SQL - Structured Query Language SQL je počítačový jazyk určený na komunikáciu s relačným SRBD neprocedurálny (deklaratívny) jazyk
More informationTransactions and Isolation
Transactions and Isolation Tom Kelliher, CS 318 Apr. 29, 2002 1 Administrivia Announcements Normal form analyses due Wednesday. Toolboxes and projects due Friday. Review for final on Friday. Course evaluation
More informationSQL: Transactions. Introduction to Databases CompSci 316 Fall 2017
SQL: Transactions Introduction to Databases CompSci 316 Fall 2017 2 Announcements (Tue., Oct. 17) Midterm graded Sample solution already posted on Sakai Project Milestone #1 feedback by email this weekend
More informationDatabázy (2) Prednáška 08. Alexander Šimko
Databázy (2) Prednáška 08 Alexander Šimko simko@fmph.uniba.sk Contents I Funkcie Zložené typy PL/pgSQL Agregačné funkcie Funkcie Section 1 Funkcie Funkcie PostgreSQL umožňuje vytvoriť si vlastné databázové
More informationCopyright 2016 by Martin Krug. All rights reserved.
MS Managed Service Copyright 2016 by Martin Krug. All rights reserved. Reproduction, or translation of materials without the author's written permission is prohibited. No content may be reproduced without
More informationTransaction Management Chapter 11. Class 9: Transaction Management 1
Transaction Management Chapter 11 Class 9: Transaction Management 1 The Concurrent Update Problem To prevent errors from being introduced when concurrent updates are attempted, the application logic must
More informationIntroduction to Databases, Fall 2005 IT University of Copenhagen. Lecture 10: Transaction processing. November 14, Lecturer: Rasmus Pagh
Introduction to Databases, Fall 2005 IT University of Copenhagen Lecture 10: Transaction processing November 14, 2005 Lecturer: Rasmus Pagh Today s lecture Part I: Transaction processing Serializability
More informationTransactions & Concurrency Control
CMPUT 391 Database Management Systems & Concurrency Control - - CMPUT 391 Database Management Systems Department of Computing Science University of Alberta Outline Transaction Isolation & Consistency Isolation
More informationWeak Levels of Consistency
Weak Levels of Consistency - Some applications are willing to live with weak levels of consistency, allowing schedules that are not serialisable E.g. a read-only transaction that wants to get an approximate
More informationExample: Transfer Euro 50 from A to B
TRANSACTIONS Example: Transfer Euro 50 from A to B 1. Read balance of A from DB into Variable a: read(a,a); 2. Subtract 50.- Euro from the balance: a:= a 50; 3. Write new balance back into DB: write(a,a);
More informationDistribuované databázy Motivácia Homogénne a heterogénne databázové systémy Distribuované databázové systémy a transakcie Požiadavky na systém,
Distribuované databázy Motivácia Homogénne a heterogénne databázové systémy Distribuované databázové systémy a transakcie Požiadavky na systém, architektúra Algoritmy 1 Literatúra P.A. Bernstein, V. Hadzilacos,
More informationAplikačný dizajn manuál
Aplikačný dizajn manuál Úvod Aplikačný dizajn manuál je súbor pravidiel vizuálnej komunikácie. Dodržiavaním jednotných štandardov, aplikácií loga, písma a farieb pri prezentácii sa vytvára jednotný dizajn,
More informationOchrana proti DDoS za použitia open-source software. Katarína Ďurechová
Ochrana proti DDoS za použitia open-source software Katarína Ďurechová katarina.durechova@nic.cz 30.11.2013 Distributed Denial of Service odopretie služby dosiahnutím limitu pripojenia sieťovej karty CPU
More informationDatabase Application Development Oracle PL/SQL, part 2. CS430/630 Lecture 18b
Database Application Development Oracle PL/SQL, part 2 CS430/630 Lecture 18b Murach Chapter 14 How to manage transactions and locking PL/SQL, C14 2014, Mike Murach & Associates, Inc. Slide 2 Objectives
More informationLocking, concurrency, and isolation
Holdable result sets and autocommit When autocommit is on, a positioned update or delete statement will automatically cause the transaction to commit. If the result set has holdability ResultSet.CLOSE_CURSORS_AT_COMMIT,
More informationCHAPTER 3 RECOVERY & CONCURRENCY ADVANCED DATABASE SYSTEMS. Assist. Prof. Dr. Volkan TUNALI
CHAPTER 3 RECOVERY & CONCURRENCY ADVANCED DATABASE SYSTEMS Assist. Prof. Dr. Volkan TUNALI PART 1 2 RECOVERY Topics 3 Introduction Transactions Transaction Log System Recovery Media Recovery Introduction
More informationDesatinné čísla #1a. Decimal numbers #1b. How much larger is 21,8 than 1,8? Desatinné čísla #2a. Decimal numbers #2b. 14 divided by 0,5 equals...
Desatinné čísla #1a Mravec išiel 5,5 cm presne na sever, potom 3,4 cm na východ, 1,8 cm na juh, 14,3 cm na západ, 1,3 cm na sever a 10,9 cm na východ. Najmenej koľko cm musí teraz prejsť, aby sa dostal
More informationHow Oracle Does It. No Read Locks
How Oracle Does It Oracle Locking Policy No Read Locks Normal operation: no read locks Readers do not inhibit writers Writers do not inhibit readers Only contention is Write-Write Method: multiversion
More informationBGP - duálne prepojenie AS. (primary + backup spoj), s IBGP, cez virtuální L2 linky
BGP - duálne prepojenie AS (primary + backup spoj), s IBGP, cez virtuální L2 linky Peter Jašica Abstrakt: Cieľom tohto projektu je zhotoviť a otestovať funkčnosť BGP s dvojitým prepojením Autonómnych systémov.
More informationEšte o transakciách. Viac o transakciách
Ešte o transakciách Atomičnosť a trvanlivosť použiteľnosť žurnálu RC recoverable ACR bez kaskádového rollbacku Striktné (strict) SQL úrovne izolácie Deadlock and starvation ignorovanie (pštrosí algoritmus)
More informationIntegrity Constraints, Triggers, Transactions and Procedures
Integrity Constraints, Triggers, Transactions and Procedures Database and Web Applications Laboratory João Correia Lopes INESC TEC, Faculdade de Engenharia, Universidade do Porto 19 March 2018 1 / 40 Introduction
More informationDATABASE TRANSACTIONS. CS121: Relational Databases Fall 2017 Lecture 25
DATABASE TRANSACTIONS CS121: Relational Databases Fall 2017 Lecture 25 Database Transactions 2 Many situations where a sequence of database operations must be treated as a single unit A combination of
More informationModule 15: Managing Transactions and Locks
Module 15: Managing Transactions and Locks Overview Introduction to Transactions and Locks Managing Transactions SQL Server Locking Managing Locks Introduction to Transactions and Locks Transactions Ensure
More informationMalé velké databázy III. / 1. cast
Malé velké databázy III. / 1. cast Hovorí sa, že tam, kde sa nieco koncí, iné sa zacína. Oficiálny školský rok sa blíži k úspešnému koncu, ale my zacíname. Preto vás vítam na vysokej škole databáz. Ako
More informationTestovanie bieleho šumu
Beáta Stehlíková FMFI UK Bratislava Opakovanie z prednášky Vygenerujeme dáta Vygenerujeme dáta: N
More information1 Komplexný príklad využitia OOP
1 Komplexný príklad využitia OOP Najčastejším využitím webových aplikácií je komunikácia s databázovým systémom. Komplexný príklad je preto orientovaný práve do tejto oblasti. Od verzie PHP 5 je jeho domovskou
More informationRecipient Configuration. Štefan Pataky MCP, MCTS, MCITP
Recipient Configuration Štefan Pataky MCP, MCTS, MCITP Agenda Mailbox Mail Contact Distribution Groups Disconnected Mailbox Mailbox (vytvorenie nového účtu) Exchange Management Console New User Exchange
More informationTRANSACTION MANAGEMENT
TRANSACTION MANAGEMENT CS 564- Spring 2018 ACKs: Jeff Naughton, Jignesh Patel, AnHai Doan WHAT IS THIS LECTURE ABOUT? Transaction (TXN) management ACID properties atomicity consistency isolation durability
More informationRiešenia a technológie pre jednotnú správu používateľov
Riešenia a technológie pre jednotnú správu používateľov Radovan Semančík Agenda Úvod: Identity Crisis Technológie správy používateľov Postup nasadenia Záver Súčasný stav IT Security Nekonzistentné bezpečnostné
More informationRegistrácia účtu Hik-Connect
Registrácia účtu Hik-Connect Tento návod popisuje postup registrácie účtu služby Hik-Connect prostredníctvom mobilnej aplikácie a webového rozhrania na stránke www.hik-connect.comg contents in this document
More informationTransactions Processing (i)
ICS 321 Spring 2012 Transactions Processing (i) Asst. Prof. Lipyeow Lim Information & Computer Science Department University of Hawaii at Manoa 03/07/2012 Lipyeow Lim -- University of Hawaii at Manoa 1
More informationOverview. Introduction to Transaction Management ACID. Transactions
Introduction to Transaction Management UVic C SC 370 Dr. Daniel M. German Department of Computer Science Overview What is a transaction? What properties transactions have? Why do we want to interleave
More informationDatabase Systemer, Forår 2006 IT Universitet i København. Lecture 10: Transaction processing. 6 april, Forelæser: Esben Rune Hansen
Database Systemer, Forår 2006 IT Universitet i København Lecture 10: Transaction processing 6 april, 2006 Forelæser: Esben Rune Hansen Today s lecture Part I: Transaction processing Serializability and
More informationTransactions and Concurrency Control. Dr. Philip Cannata
Transactions and Concurrency Control Dr. Philip Cannata 1 To open two SQLDevelopers: On the Mac do the following: click on the SQLDeveloper icon to start one instance from the command line run the following
More informationJDBC, Transactions. Niklas Fors JDBC 1 / 38
JDBC, Transactions SQL in Programs Embedded SQL and Dynamic SQL JDBC Drivers, Connections, Statements, Prepared Statements Updates, Queries, Result Sets Transactions Niklas Fors (niklas.fors@cs.lth.se)
More informationWhat are Transactions? Transaction Management: Introduction (Chap. 16) Major Example: the web app. Concurrent Execution. Web app in execution (CS636)
What are Transactions? Transaction Management: Introduction (Chap. 16) CS634 Class 14, Mar. 23, 2016 So far, we looked at individual queries; in practice, a task consists of a sequence of actions E.g.,
More information1 Vytvorenie tabuľky
Základy jazyka SQL (Structured Query Language) - vyvinula IBM začiatkom 70-tych rokov - je to deklaratívny jazyk (popisuje čo urobiť, nie ako) - je súčasťou veľkých databázových systémov (Informix, Oracle,
More informationTransaction Management: Introduction (Chap. 16)
Transaction Management: Introduction (Chap. 16) CS634 Class 14 Slides based on Database Management Systems 3 rd ed, Ramakrishnan and Gehrke What are Transactions? So far, we looked at individual queries;
More informationIntroducing Transactions
We have so far interactively executed several SQL statements that have performed various actions in your MySQL database. The statements were run in an isolated environment one statement at a time, with
More informationTransaction Processing: Concurrency Control ACID. Transaction in SQL. CPS 216 Advanced Database Systems. (Implicit beginning of transaction)
Transaction Processing: Concurrency Control CPS 216 Advanced Database Systems ACID Atomicity Transactions are either done or not done They are never left partially executed Consistency Transactions should
More informationDatabase Systems CSE 414
Database Systems CSE 414 Lecture 22: Transaction Implementations CSE 414 - Spring 2017 1 Announcements WQ7 (last!) due on Sunday HW7: due on Wed, May 24 using JDBC to execute SQL from Java using SQL Server
More informationA can be implemented as a separate process to which transactions send lock and unlock requests The lock manager replies to a lock request by sending a lock grant messages (or a message asking the transaction
More informationCSE 344 MARCH 25 TH ISOLATION
CSE 344 MARCH 25 TH ISOLATION ADMINISTRIVIA HW8 Due Friday, June 1 OQ7 Due Wednesday, May 30 Course Evaluations Out tomorrow TRANSACTIONS We use database transactions everyday Bank $$$ transfers Online
More informationJeden z variantov príkazu priradenia nám umožňuje zadať za sebou aj viacej vstupných hodnôt, ako napríklad
Príkaz priradenia Príkaz priradenia slúži na priradenie hodnoty premennej. Má tvar premenná = výraz, kde premenná je identifikátor, znak = sa číta priraď a vyhodnotením výrazu sa získa hodnota určitého
More informationL i (A) = transaction T i acquires lock for element A. U i (A) = transaction T i releases lock for element A
Lock-Based Scheduler Introduction to Data Management CSE 344 Lecture 20: Transactions Simple idea: Each element has a unique lock Each transaction must first acquire the lock before reading/writing that
More informationZákladná(umelecká(škola(Jána(Albrechta Topoľčianska(15
Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15 851(01(Bra@slava Titl.: Ján(Hrčka Bohrova(11 851(01(Bra@slava V(Bra@slave(21.11.2013 Vec:(Odpoveď(na(informácie(ohľadom(mandátnej(zmluvy(na(základe(Zákona(č.(211/2000(Zb.
More informationDatabase Systems CSE 414
Database Systems CSE 414 Lecture 27: Transaction Implementations 1 Announcements Final exam will be on Dec. 14 (next Thursday) 14:30-16:20 in class Note the time difference, the exam will last ~2 hours
More informationDatabase System Concepts
Chapter 15+16+17: Departamento de Engenharia Informática Instituto Superior Técnico 1 st Semester 2010/2011 Slides (fortemente) baseados nos slides oficiais do livro c Silberschatz, Korth and Sudarshan.
More informationDatabases - Transactions
Databases - Transactions Gordon Royle School of Mathematics & Statistics University of Western Australia Gordon Royle (UWA) Transactions 1 / 34 ACID ACID is the one acronym universally associated with
More informationMS Exchange 2010 Prechod Ing. Peter Záhradník
MS Exchange 2010 Prechod Ing. Peter Záhradník Gratex Support Center support@gratex.com Exchange 2010 o com to bude? Tato prezentacia bude pre ludi co uvazuju nad prechodom na novy Exchange zopar otazok
More informationSchedule. Today: Feb. 21 (TH) Feb. 28 (TH) Feb. 26 (T) Mar. 5 (T) Read Sections , Project Part 6 due.
Schedule Today: Feb. 21 (TH) Transactions, Authorization. Read Sections 8.6-8.7. Project Part 5 due. Feb. 26 (T) Datalog. Read Sections 10.1-10.2. Assignment 6 due. Feb. 28 (TH) Datalog and SQL Recursion,
More informationTransactions. 1. Transactions. Goals for this lecture. Today s Lecture
Goals for this lecture Transactions Transactions are a programming abstraction that enables the DBMS to handle recovery and concurrency for users. Application: Transactions are critical for users Even
More informationReferences. Transaction Management. Database Administration and Tuning 2012/2013. Chpt 14 Silberchatz Chpt 16 Raghu
Database Administration and Tuning 2012/2013 Transaction Management Helena Galhardas DEI@Técnico DMIR@INESC-ID Chpt 14 Silberchatz Chpt 16 Raghu References 1 Overall DBMS Structure Transactions Transaction
More informationDatabase Systems. Announcement
Database Systems ( 料 ) December 27/28, 2006 Lecture 13 Merry Christmas & New Year 1 Announcement Assignment #5 is finally out on the course homepage. It is due next Thur. 2 1 Overview of Transaction Management
More informationIntroduction to Data Management CSE 344
Introduction to Data Management CSE 344 Unit 7: Transactions Schedules Implementation Two-phase Locking (3 lectures) 1 Class Overview Unit 1: Intro Unit 2: Relational Data Models and Query Languages Unit
More informationJAVA. Sieťové programovanie
JAVA Sieťové programovanie Sieťové programovanie Sieťová knižnica jazyka JAVA bola vytvorená podľa súborovej knižnice Zapúzdrovanie pripojení do streamov Multithreading Identifikácia počítača Každý počítač
More informationTransaction Management
Transaction Management Imran Khan FCS, IBA In this chapter, you will learn: What a database transaction is and what its properties are How database transactions are managed What concurrency control is
More informationIntro to Transaction Management
Intro to Transaction Management CMPSCI 645 May 3, 2006 Gerome Miklau Slide content adapted from Ramakrishnan & Gehrke, Zack Ives 1 Concurrency Control Concurrent execution of user programs is essential
More informationXI. Transactions CS Computer App in Business: Databases. Lecture Topics
XI. Lecture Topics Properties of Failures and Concurrency in SQL Implementation of Degrees of Isolation CS338 1 Problems Caused by Failures Accounts(, CId, BranchId, Balance) update Accounts set Balance
More informationTRANSACTION PROCESSING PROPERTIES OF A TRANSACTION TRANSACTION PROCESSING PROPERTIES OF A TRANSACTION 4/3/2014
TRANSACTION PROCESSING SYSTEMS IMPLEMENTATION TECHNIQUES TRANSACTION PROCESSING DATABASE RECOVERY DATABASE SECURITY CONCURRENCY CONTROL Def: A Transaction is a program unit ( deletion, creation, updating
More informationOverview of Transaction Management
Overview of Transaction Management Chapter 16 Comp 521 Files and Databases Fall 2010 1 Database Transactions A transaction is the DBMS s abstract view of a user program: a sequence of database commands;
More informationTextový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona
Popis textového formátu a xsd schémy na zasielanie údajov podľa 27 ods. 2 písm. f) zákona (formu na zaslanie údajov si zvolí odosielateľ údajov) Textový formát na zasielanie údajov podľa 27 ods. 2 písm.
More informationReference types in Clojure. April 2, 2014
Reference types in Clojure April 2, 2014 Clojure atoms, vars, refs, agents Software transactional memory 2 / 15 From The Joy of Clojure book Time The relative moments when events occur State A snapshot
More informationTransaction Management: Concurrency Control, part 2
Transaction Management: Concurrency Control, part 2 CS634 Class 16 Slides based on Database Management Systems 3 rd ed, Ramakrishnan and Gehrke Locking for B+ Trees Naïve solution Ignore tree structure,
More informationLocking for B+ Trees. Transaction Management: Concurrency Control, part 2. Locking for B+ Trees (contd.) Locking vs. Latching
Locking for B+ Trees Transaction Management: Concurrency Control, part 2 Slides based on Database Management Systems 3 rd ed, Ramakrishnan and Gehrke CS634 Class 16 Naïve solution Ignore tree structure,
More informationIntro to DB CHAPTER 15 TRANSACTION MNGMNT
Intro to DB CHAPTER 15 TRANSACTION MNGMNT Chapter 15: Transactions Transaction Concept Transaction State Implementation of Atomicity and Durability Concurrent Executions Serializability Recoverability
More informationCSE 344 MARCH 9 TH TRANSACTIONS
CSE 344 MARCH 9 TH TRANSACTIONS ADMINISTRIVIA HW8 Due Monday Max Two Late days Exam Review Sunday: 5pm EEB 045 CASE STUDY: SQLITE SQLite is very simple More info: http://www.sqlite.org/atomiccommit.html
More informationTransaction Concept. Two main issues to deal with:
Transactions Transactions Transactions Transaction States Concurrent Executions Serializability Recoverability Implementation of Isolation Transaction Definition in SQL Testing for Serializability. Transaction
More informationProblems Caused by Failures
Problems Caused by Failures Update all account balances at a bank branch. Accounts(Anum, CId, BranchId, Balance) Update Accounts Set Balance = Balance * 1.05 Where BranchId = 12345 Partial Updates - Lack
More informationFinal Review #2. Monday, May 4, 2015
Final Review #2 Monday, May 4, 2015 Final Week Today: Revisit transactions Wednesday: Final exam Reminder: Course evaluations Grading Announcements Class projects will be graded by 05/10 HW 4 will be graded
More informationDatabases - Transactions II. (GF Royle, N Spadaccini ) Databases - Transactions II 1 / 22
Databases - Transactions II (GF Royle, N Spadaccini 2006-2010) Databases - Transactions II 1 / 22 This lecture This lecture discusses how a DBMS schedules interleaved transactions to avoid the anomalies
More informationConcurrency Control & Recovery
Transaction Management Overview CS 186, Fall 2002, Lecture 23 R & G Chapter 18 There are three side effects of acid. Enhanced long term memory, decreased short term memory, and I forget the third. - Timothy
More information) Intel)(TX)memory):) Transac'onal) Synchroniza'on) Extensions)(TSX))) Transac'ons)
) Intel)(TX)memory):) Transac'onal) Synchroniza'on) Extensions)(TSX))) Transac'ons) Transactions - Definition A transaction is a sequence of data operations with the following properties: * A Atomic All
More informationDatabases. Laboratorio de sistemas distribuidos. Universidad Politécnica de Madrid (UPM)
Databases Laboratorio de sistemas distribuidos Universidad Politécnica de Madrid (UPM) http://lsd.ls.fi.upm.es/lsd/lsd.htm Nuevas tendencias en sistemas distribuidos 2 Summary Transactions. Isolation.
More informationPart VIII Transactions, Integrity and Triggers
Part VIII Transactions, Integrity and Triggers Transactions, Integrity and Triggers 1 Basic Terms 2 Term Transaction 3 Transactions in SQL 4 Integrity Constraints in SQL 5 Trigger Saake Database Concepts
More informationAnnouncements. SQL: Part IV. Transactions. Summary of SQL features covered so far. Fine prints. SQL transactions. Reading assignments for this week
Announcements 2 SQL: Part IV CPS 216 Advanced Database Systems Reading assignments for this week A Critique of ANSI SQL Isolation Levels, by Berenson et al. in SIGMOD 1995 Weaving Relations for Cache Performance,
More informationTransactions. ACID Properties of Transactions. Atomicity - all or nothing property - Fully performed or not at all
Transactions - An action, or series of actions, carried out by a single user or application program, which reads or updates the contents of the database - Logical unit of work on the database - Usually
More informationOPTIMISTIC AND MULTIVERSION CONCURRENCY CONTROL
OPTIMISTIC AND MULTIVERSION CONCURRENCY CONTROL With PostgreSQL Seminar DBS I, Presentation 2 Gian Poltéra Student, Master of Science in Engineering MRU Software & Systems Rapperswil, 06. June 2014 Agenda
More informationRecoverability. Kathleen Durant PhD CS3200
Recoverability Kathleen Durant PhD CS3200 1 Recovery Manager Recovery manager ensures the ACID principles of atomicity and durability Atomicity: either all actions in a transaction are done or none are
More informationbobpusateri.com heraflux.com linkedin.com/in/bobpusateri. Solutions Architect
1 @sqlbob bobpusateri.com heraflux.com linkedin.com/in/bobpusateri Specialties / Focus Areas / Passions: Performance Tuning & Troubleshooting Very Large Databases SQL Server Storage Engine High Availability
More informationDistributed Data Management Transactions
Felix Naumann F-2.03/F-2.04, Campus II Hasso Plattner Institut must ensure that interactions succeed consistently An OLTP Topic Motivation Most database interactions consist of multiple, coherent operations
More informationOchrana koncových staníc pomocou Cisco Security Agent 6.0. Ľubomír Varga.
Ochrana koncových staníc pomocou Cisco Security Agent 6.0 Ľubomír Varga lubomir.varga@lynx.sk Agenda CSA 6.0 refresh Vybrané vlastnosti CSA 6.0 Application Trust levels Notify User Rule Actions User Justifications
More informationSQL in a Server Environment
SQL in a Server Environment Vaidė Narváez Computer Information Systems January 13th, 2011 The Three-Tier Architecture Application logic components Copyright c 2009 Pearson Education, Inc. Publishing as
More informationNIKY a NIKY S. JEDNOFÁZOVÉ UPS od 600 do 3000 VA SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ INŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV
NIKY a NIKY S JEDNOFÁZOVÉ UPS od 600 do 3000 VA SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ ŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV Ideálna ochrana pre malé kancelárie a domáce kancelárske aplikácie. Tento rad ponúka
More informationDATABÁZOVÉ SYSTÉMY. Databázová technológia je pojem, ktorý sa zaoberá riadením veľkého množstva perzistentných (stály), spoľahlivých a zdieľaných dát.
LITERATÚRA: Jaroslav Pokorný Databázová abeceda Všetky manuály: POSTGRE SQL 7.2 C.J.Date an introduction to database systems Someber A. databázové systémy, 1988 DATABÁZOVÉ SYSTÉMY Databáza súbor informácií,
More informationDatabase Security: Transactions, Access Control, and SQL Injection
.. Cal Poly Spring 2013 CPE/CSC 365 Introduction to Database Systems Eriq Augustine.. Transactions Database Security: Transactions, Access Control, and SQL Injection A transaction is a sequence of SQL
More informationTP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca
TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca Obsah balenia TL-WR743ND Rýchly inštalačný sprievodca PoE injektor Napájací adaptér CD Ethernet kábel Systémové požiadavky
More informationCSE 344 MARCH 5 TH TRANSACTIONS
CSE 344 MARCH 5 TH TRANSACTIONS ADMINISTRIVIA OQ6 Out 6 questions Due next Wednesday, 11:00pm HW7 Shortened Parts 1 and 2 -- other material candidates for short answer, go over in section Course evaluations
More informationIntroduction to Data Management CSE 414
Introduction to Data Management CSE 414 Lecture 23: Transactions CSE 414 - Winter 2014 1 Announcements Webquiz due Monday night, 11 pm Homework 7 due Wednesday night, 11 pm CSE 414 - Winter 2014 2 Where
More information