1 / 26

Az Oracle SQL 13.

Az Oracle SQL 13. Konkurencia (egyidejű adatelérések). A rádiótelefonokat kérem KIKAPCSOLNI!. Olvasnivaló. Gyári dokumentáció: Oracle 9i Database Concepts (20. fejezet) Oracle 9i Application Developer’s Guide - Fundamentals (7. fejezet). A konkurencia.

lupita
Download Presentation

Az Oracle SQL 13.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Az Oracle SQL 13. Konkurencia (egyidejű adatelérések) Markó Tamás, PTE TTK

  2. A rádiótelefonokat kérem KIKAPCSOLNI! Markó Tamás, PTE TTK

  3. Olvasnivaló • Gyári dokumentáció: • Oracle 9i Database Concepts (20. fejezet) • Oracle 9i Application Developer’s Guide - Fundamentals (7. fejezet) Markó Tamás, PTE TTK

  4. A konkurencia • Több felhasználó éri el egy időben ugyanazokat az adatokat • A szabad (összehangolatlan) hozzáférés megsértheti az adatok integritását • Az egyidejű hozzáférés összehangolása nem okozhat számottevő lassulást • A problémát különböző típusú zárolásokkal és az adatok több verziójának megtartásával oldja meg az Oracle Markó Tamás, PTE TTK

  5. Sorbarendezhető tranzakciók(serializability) • A párhuzamosan futó tranzakciók hatása olyan, mintha egymás után hajtották volna végre őket • Ennek megvalósítása a tranzakciók hatásának egymástól való teljes függetlenségét eredményezné • Ezt a célt csak részlegesen érik el • kompromisszumot kell kötni a sebesség és a sorbarendezhetőség között • többféle izolálási szintet definiálhatunk Markó Tamás, PTE TTK

  6. A tranzakciók izolálásának szintjei (az SQL-92-es szabvány szerint) nincs alap- értelm. nincs beállít- ható Markó Tamás, PTE TTK

  7. Konzisztencia és integritás • Konzisztencia: a felhasználó által olvasott vagy írt adatokat nem változtatják meg más felhasználók a művelet végrehajtása közben • Integritás: az adatbázisban lévő adatok és az adatbázis szerkezete a megfelelő sorrendben tükrözik a rajtuk végzett összes módosítást Markó Tamás, PTE TTK

  8. Utasításszintű olvasási konzisztencia • Az egy utasítással olvasott adatok az adatbázis egy adott időpillanatban lévő állapotát tükrözik • az adatok nem változnak az utasítás végrehajtása közben • csak a végrehajtás megkezdése előtt lezárt tranzakciók hatása látszik • Az olvasást végző felhasználónak nem kell várni • az adatbázist író felhasználókra • más, az adatbázist ugyancsak olvasó felhasználókra • Az adatbázist író felhasználónak • nem kell várni az ugyanazokat az adatokat olvasó felhasználókra • kell várni az ugyanazokat a sorokat író felhasználókra

  9. Az utasításszintű olvasási konzisztencia biztosítása • Az adatok több verzióját is megőrzik • Az 1024-es tranzakciót megkezdő felhasználó már az új - bár még nem végleges - adatokat látja • A korábban kezdődött (pl. az 10023-as) tranzakció az adatok kiindulási állapotát látja system change number, a tranzakciót azonosítja adott SCN-nel indított lekérdezés az újabb módosításokat nem látja Markó Tamás, PTE TTK

  10. Sorbarendezhető tranzakciók kikényszerítése • SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; • Csak ha kicsi az esélye annak, hogy egyidejű tranzakciók ugyanazokat a sorokat módosítják • Hibát akoz, ha olyan sort akarunk módosítani, amit az aktuálisnál később kezdődő tranzakció már végérvényesen módosított • A hibát az alkalmazásnak kezelni kell (pl. az aktuális tranzakció visszagörgetésével) Markó Tamás, PTE TTK

  11. Zárolás Markó Tamás, PTE TTK

  12. A zárolás dióhéjban • Célja az egyidejű adatelérések káros kölcsönhatásának kiküszöbölése • Biztosítja a konzisztenciát és az integritást • Korlátlan számú felhasználóra működik • Az Oracle automatikusan kezeli • Sorszintű zárolás történik • kisebb az esélye az azonos adatok zárolásáért való versengésnek • A zárolás nem akadályozza az adatok olvasását, csak a mások által való módosítást Markó Tamás, PTE TTK

  13. Zárolási módok • Kizárólagos (exclusive lock): • adatmódosításhoz • csak az a tranzakció módosíthatja, amelyik zárolta • Osztott (share lock): • több, az adatokat csak olvasó tranzakció osztozhat rajta • megakadályozza az adatok módosítását • A tranzakció mindkét esetben várakozik, ha nem tudja elhelyezni a számára szükséges zárat Markó Tamás, PTE TTK

  14. A zárolás időtartama • Egy tranzakción belül több utasítás is elhelyezhet zárakat • Mindegyik zár fennmarad a tranzakció egész idejére • Patthelyzet is kialakulhat Markó Tamás, PTE TTK

  15. Patthelyzet (deadlock) • Kialakulása: • két tranzakció már zárolt bizonyos sorokat • aztán olyan sort akar zárolni, amit a másik már zárolt • Automatikus zárolásnál a kialakult patthelyzetet az Oracle felismeri és elhárítja • a két, egymással konfliktusba került utasítás egyikét visszagörgeti Markó Tamás, PTE TTK

  16. Egyik tranzakció: UPDATE dolgozo SET fizetes=125000 WHERE dolg_kod=200; UPDATE dolgozo SET fizetes=230000 WHERE dolg_kod=100; Másik tranzakció UPDATE dolgozo SET fonok=123 WHERE dolg_kod=100; UPDATE dolgozo SET fonok=123 WHERE dolg_kod=200; Példa patthelyzet kialakulására Markó Tamás, PTE TTK

  17. A zárak típusai • Az Oracle többféle zárat használ • Három fő kategória: • DML-zár: az adatokat védi • DDL-zár: az adatbázis-objektumokat (pl. táblákat) védi • belső zár: az adatbázis belső adatszerkezeteit (pl. adatfájlokat) védi Markó Tamás, PTE TTK

  18. Sorszintű DML-zárak (TX zárak) • Ez az alapvető forma • A módosított sorokra mindig kizárólagos sorszintű zár jön létre • Sorszintű zárak létrehozásakor a tranzakció az egész táblára is zárat tesz, hogy a szerkezetét ne lehessen módosítani (lásd a következő diát) Markó Tamás, PTE TTK

  19. Táblaszintű DML-zárak (TM zárak) • Két céljuk van: • biztosítják a DML-utasítások hozzáférését a tranzakció idejére • megakadályozzák azon DDL utasításokat, amik konfliktusba kerülnének a tranzakcióval • Fajtáik növekvő szigorúság szerint: • row share (RS): a tranzakció sorokat zárolt a módosítás szándékával • row exclusive (RX): a tranzakció sorokat módosított a táblában • share (S): csak manuálisan állítható be • share row exclusive (SRX): csak manuálisan állítható be • exclusive (X): csak manuálisan állítható be az egyes esetekben engedélyezett és tiltott műveletek listáját lásd a dokumentációban

  20. DDL-zárak • Az adatbázis-objektumokat védi a DDL-utasítások végrehajtásának idejére • Működésük teljesen automatikus • Három típus: • exclusive DDL lock: ez a szokásos • share DDL lock: így zárolódnak pl. az eljárás által hivatkozott táblák a CREATE PROCEDURE utasítás végrehajtása közben • breakable parse lock: az SQL utasítások végrehajtásának elemzési fázisában jön létre a hivatkozott objektumokra Markó Tamás, PTE TTK

  21. Belső zárak • Az adatbázis belső adatszerkezeteit védik • Több fajta van: • latch • internal lock • dictionary cache lock • file and log management lock • tablespace and rollback segment lock Markó Tamás, PTE TTK

  22. Explicit (manuális) zárolás • Van rá lehetőség • Sorszintű és táblaszintű is lehet • A DBMS_LOCK programcsomag ennek végrehajtására való Markó Tamás, PTE TTK

  23. Flashback query Markó Tamás, PTE TTK

  24. A jelenség lényege • Flashback = a film visszanézése • Az adatbázis állapotának lekérdezése egy korábbi időpontban • egzakt időpontban • megadott SCN-nél (System Commit Number) • Az adatok több verziójának tárolása ad rá lehetőséget • a DBA tudja beállítani, hogy meddig őrződjenek meg a korábbi állapotok • Nem görgeti vissza a változásokat! Markó Tamás, PTE TTK

  25. Felhasználási lehetőségek • Az adatbázis javítása (pl. véletlenül törölt rekordok visszaállítása) • Az adatbázis két eltérő időben vett állapotának összehasonlítása • Hosszan futó lekérdezések (pl. jelentéskészítésnél) az adatbázis konzisztens állapotát látják Markó Tamás, PTE TTK

  26. További információk • Az időpont a SELECT utasítás AS OF szakaszával állítható be, pl.SELECT fizetes FROM dolgozo AS OF TIMESTAMP to_timestamp(’20051231',’YYYYMMDD') WHERE dolg_kod = 205; • Lásd a DBMS_FLASHBACK programcsomagot is Markó Tamás, PTE TTK

More Related