Databázy (2) Prednáška 03. Alexander Šimko

Size: px
Start display at page:

Download "Databázy (2) Prednáška 03. Alexander Šimko"

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 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 information

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Spá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 information

Databázové systémy. SQL Window functions

Databá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 information

Databázy (1) Prednáška 08. Alexander Šimko

Databá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 information

kucharka exportu pro 9FFFIMU

kucharka 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 information

Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami)

Constraint 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 information

VYLEPŠOVANIE KONCEPTU TRIEDY

VYLEPŠ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 information

CSE 530A ACID. Washington University Fall 2013

CSE 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 information

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator

Anycast. Ľ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 information

SQL: Transactions. Announcements (October 2) Transactions. CPS 116 Introduction to Database Systems. Project milestone #1 due in 1½ weeks

SQL: 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 information

Poradové a agregačné window funkcie. ROLLUP a CUBE

Poradové 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 information

Jazyk SQL. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Jazyk 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 information

Transactions and Isolation

Transactions 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 information

SQL: Transactions. Introduction to Databases CompSci 316 Fall 2017

SQL: 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 information

Databázy (2) Prednáška 08. Alexander Šimko

Databá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 information

Copyright 2016 by Martin Krug. All rights reserved.

Copyright 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 information

Transaction Management Chapter 11. Class 9: Transaction Management 1

Transaction 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 information

Introduction 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, 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 information

Transactions & Concurrency Control

Transactions & 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 information

Weak Levels of Consistency

Weak 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 information

Example: Transfer Euro 50 from A to B

Example: 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 information

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,

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, 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 information

Aplikačný dizajn manuál

Aplikač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 information

Ochrana proti DDoS za použitia open-source software. Katarína Ďurechová

Ochrana 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 information

Database Application Development Oracle PL/SQL, part 2. CS430/630 Lecture 18b

Database 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 information

Locking, concurrency, and isolation

Locking, 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 information

CHAPTER 3 RECOVERY & CONCURRENCY ADVANCED DATABASE SYSTEMS. Assist. Prof. Dr. Volkan TUNALI

CHAPTER 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 information

Desatinné čí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. 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 information

How Oracle Does It. No Read Locks

How 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 information

BGP - 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 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 information

Ešte o transakciách. Viac o transakciách

Eš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 information

Integrity Constraints, Triggers, Transactions and Procedures

Integrity 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 information

DATABASE TRANSACTIONS. CS121: Relational Databases Fall 2017 Lecture 25

DATABASE 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 information

Module 15: Managing Transactions and Locks

Module 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 information

Malé velké databázy III. / 1. cast

Malé 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 information

Testovanie bieleho šumu

Testovanie bieleho šumu Beáta Stehlíková FMFI UK Bratislava Opakovanie z prednášky Vygenerujeme dáta Vygenerujeme dáta: N

More information

1 Komplexný príklad využitia OOP

1 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 information

Recipient Configuration. Štefan Pataky MCP, MCTS, MCITP

Recipient 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 information

TRANSACTION MANAGEMENT

TRANSACTION 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 information

Riešenia a technológie pre jednotnú správu používateľov

Rieš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 information

Registrácia účtu Hik-Connect

Registrá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 information

Transactions Processing (i)

Transactions 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 information

Overview. Introduction to Transaction Management ACID. Transactions

Overview. 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 information

Database 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, 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 information

Transactions and Concurrency Control. Dr. Philip Cannata

Transactions 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 information

JDBC, Transactions. Niklas Fors JDBC 1 / 38

JDBC, 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 information

What 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) 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 information

1 Vytvorenie tabuľky

1 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 information

Transaction Management: Introduction (Chap. 16)

Transaction 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 information

Introducing Transactions

Introducing 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 information

Transaction Processing: Concurrency Control ACID. Transaction in SQL. CPS 216 Advanced Database Systems. (Implicit beginning of transaction)

Transaction 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 information

Database Systems CSE 414

Database 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 information

A 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 information

CSE 344 MARCH 25 TH ISOLATION

CSE 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 information

Jeden z variantov príkazu priradenia nám umožňuje zadať za sebou aj viacej vstupných hodnôt, ako napríklad

Jeden 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 information

L i (A) = transaction T i acquires lock for element A. U i (A) = transaction T i releases lock for element A

L 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 information

Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15

Zá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 information

Database Systems CSE 414

Database 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 information

Database System Concepts

Database 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 information

Databases - Transactions

Databases - 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 information

MS Exchange 2010 Prechod Ing. Peter Záhradník

MS 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 information

Schedule. Today: Feb. 21 (TH) Feb. 28 (TH) Feb. 26 (T) Mar. 5 (T) Read Sections , Project Part 6 due.

Schedule. 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 information

Transactions. 1. Transactions. Goals for this lecture. Today s Lecture

Transactions. 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 information

References. Transaction Management. Database Administration and Tuning 2012/2013. Chpt 14 Silberchatz Chpt 16 Raghu

References. 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 information

Database Systems. Announcement

Database 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 information

Introduction to Data Management CSE 344

Introduction 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 information

JAVA. Sieťové programovanie

JAVA. 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 information

Transaction Management

Transaction 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 information

Intro to Transaction Management

Intro 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 information

XI. Transactions CS Computer App in Business: Databases. Lecture Topics

XI. 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 information

TRANSACTION PROCESSING PROPERTIES OF A TRANSACTION TRANSACTION PROCESSING PROPERTIES OF A TRANSACTION 4/3/2014

TRANSACTION 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 information

Overview of Transaction Management

Overview 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 information

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona

Textový 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 information

Reference types in Clojure. April 2, 2014

Reference 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 information

Transaction Management: Concurrency Control, part 2

Transaction 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 information

Locking 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. 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 information

Intro to DB CHAPTER 15 TRANSACTION MNGMNT

Intro 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 information

CSE 344 MARCH 9 TH TRANSACTIONS

CSE 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 information

Transaction Concept. Two main issues to deal with:

Transaction 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 information

Problems Caused by Failures

Problems 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 information

Final Review #2. Monday, May 4, 2015

Final 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 information

Databases - Transactions II. (GF Royle, N Spadaccini ) Databases - Transactions II 1 / 22

Databases - 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 information

Concurrency Control & Recovery

Concurrency 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) ) 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 information

Databases. Laboratorio de sistemas distribuidos. Universidad Politécnica de Madrid (UPM)

Databases. 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 information

Part VIII Transactions, Integrity and Triggers

Part 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 information

Announcements. SQL: Part IV. Transactions. Summary of SQL features covered so far. Fine prints. SQL transactions. Reading assignments for this week

Announcements. 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 information

Transactions. ACID Properties of Transactions. Atomicity - all or nothing property - Fully performed or not at all

Transactions. 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 information

OPTIMISTIC AND MULTIVERSION CONCURRENCY CONTROL

OPTIMISTIC 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 information

Recoverability. Kathleen Durant PhD CS3200

Recoverability. 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 information

bobpusateri.com heraflux.com linkedin.com/in/bobpusateri. Solutions Architect

bobpusateri.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 information

Distributed Data Management Transactions

Distributed 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 information

Ochrana 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. 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 information

SQL in a Server Environment

SQL 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 information

NIKY 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É 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 information

DATABÁ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.

DATABÁ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 information

Database Security: Transactions, Access Control, and SQL Injection

Database 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 information

TP-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 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 information

CSE 344 MARCH 5 TH TRANSACTIONS

CSE 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 information

Introduction to Data Management CSE 414

Introduction 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