Tranzakció (számítógép)

Ebben a kifejezést, vannak más célra, lásd. Transaction (egyértelműsítő lap).

Tranzakciós (Engl tranzakciót.) - a csoport egymást követő műveletek az adatbázisba. amely egy logikai munkaegység az adatokat. A tranzakció végezhető akár teljes egészében, és sikeresen tartani az adatok integritását, és bármi egyéb tranzakciók párhuzamosan húzódó, vagy nem történik egyáltalán, akkor nem termel semmilyen hatása. Által lebonyolított ügylet rendszereket. a folyamat, amely a tranzakció története jön létre.

Megkülönböztetni egymást (normál), párhuzamos és elosztott tranzakció. Elosztott ügylet használata több mint egy tranzakciós rendszer és igényel sokkal bonyolultabb logikai (például kétfázisú - kétfázisú commit protokoll tranzakció). Szintén néhány megvalósított rendszerek önálló ügylet, vagy al-ügyleteket, amelyek autonóm része a szülő tranzakciót.

Példa: meg kell átvinni a bankszámla számát 5 figyelembe véve a 7-es számú a mennyisége 10 pénzegység. Ezt úgy lehet elérni, például a csökkentett műveletsorozat:

  1. Olvassa az egyensúlyt a számlaszám 5.
  2. Csökkentheti a fennmaradó 10 pénzegység.
  3. Mentse az új egyensúlyt a számlaszám 5.
  4. Olvassa az egyensúlyt a számlaszám 7.
  5. Növekszik a fennmaradó 10 pénzegység.
  6. Mentse az új egyensúlyt a számlaszám 7.

Ezek a lépések jelentik logikai munkaegység „átutalás készpénz számlák között,” és így a tranzakciót. Ha törli ezt a tranzakciót, például a közepén, és nem, hogy megszünteti a változások, akkor könnyen hagyja el a szám a számlatulajdonos nélkül az 5., 10 egység, míg a tulajdonos a számlaszám 7 nem fog nekik.

Az egyik közös követelményeket a tranzakciós és tranzakciós rendszer egy sor ACID (Atomicity, összhang, Isolation, tartósság). ACID követelmények elsősorban megfogalmazott 1970-es években, Jim Gray [1]. Vannak azonban olyan speciális rendszerek legyengült tranzakciós tulajdonságokkal [2].

Tranzakciós elkülönítési szintek

Ideális esetben a tranzakció különböző felhasználók kell végezni annak érdekében, hogy a látszatot keltik, hogy a felhasználó az aktuális tranzakció - csak. A valóságban azonban a hatékonyság miatt és végre néhány konkrét feladatok, adatbázisok különböző szintű tranzakciós elszigetelten.

A szintek vannak leírva növelése érdekében az elszigeteltség a tranzakció, és ennek megfelelően az adatok megbízhatóságát.

  • 0 - Reading nyugtázott adat (piszkos olvasás) (Read lekötetlen, Dirty Read) - olvasás nem kötött változások mind a tranzakciók és párhuzamos tranzakció. Nincs garancia arra, hogy a módosított adatokat más tranzakciók nem módosíthatók bármikor eredményeként a rollback, így ez az olvasás egy lehetséges hibaforrás. A módosítások nem vész el (elveszett változások), május megismételhetetlen olvas és fantomok.
  • 1 - Reading ellenőrzött adatokat (Read Elkötelezett) - olvasás minden változás az ügylet és az egyidejű tranzakciók rögzítésre változásokat. Aprópénz és piszkos olvasást nem engedélyezett, lehet, hogy megismételhetetlen olvas és fantomok.
  • 2 - Repeatable Read (Olvasás Repeatable, Snapshot) - elolvasás megváltoztatja az ügylet bármilyen változás történik a párhuzamos tranzakciók annak megkezdését követően, nem áll rendelkezésre. Aprópénz, piszkos és megismételhetetlen olvasás lehetetlen, lehetséges fantomok.
  • 3 - Serializable (Serializable) - serializable tranzakciókat. Az eredmény a párhuzamos végrehajtás serializable ügylet más ügyletekkel kell logikailag egyenértékű eredményt bármilyen szekvenciális végrehajtását. szinkronizációs problémák nem merülnek fel.

Minél magasabb az izolációs szint, annál több erőforrásra van szükség, hogy azt. Ennek megfelelően fokozott elszigetelten csökkentheti a gyorsaság a párhuzamos tranzakció, amely a „fizetés” javítására megbízhatóságát.

Az adatbázis-tranzakció izolációs szint lehet kiválasztani az összes tranzakció egyszerre, és egy adott ügylet. Alapértelmezés szerint a legtöbb által használt adatbázisok az 1. szintű (Read Elkötelezett). 0. szint esetén alkalmazzák, elsősorban változások követése hosszú tranzakciók, vagy olvasni ritkán változó adatokat. 2. illetve 3. szint használnak igényes tranzakció izolálására.

Teljes körű végrehajtása elkülönítési szintek ACID tulajdonságai vannak, és nem triviális feladat. Bejövő adatok feldolgozásáért, az nagy számú kis változások, beleértve frissítését mind a táblák és indexek. Ezek a változások potenciálisan nem: ki a helyet a lemezen, a művelet túl sokáig tart (timeout), stb kell a rendszer meghibásodása esetén megfelelően visszaállítani az adatbázist az állam a tranzakció előtt ...

Az első kereskedelmi adatbázisok (például IBM DB2), amelyeket kizárólag az adathozzáférési zár ACID tulajdonságokkal. De számos zárak vezető jelentős csökkenéséhez teljesítményét. Két népszerű családnak megoldást erre a problémára, ami csökkenti a zár:

Továbbfejlesztése, az adatbázis-kezelő technológiák megjelenéséhez vezetett lock-mentes technológiák. Az ötlet, hogy szabályozza a konkurens hozzáférés időbélyeg (timestamp-alapú konkurencia ellenőrzés) fejlesztették, és ennek eredményeként a megjelenése több változata MVCC építészet. Ezek a technológiák nem kell módosítani a fakitermelés, nincs árnyéka oldalakon. Építészet megvalósított Oracle 7.x vagy újabb rekordokat az oldalak régebbi verziói egy speciális rollback szegmens, de továbbra is elérhetők lesznek az olvasás. Ha a leolvasott esik a tranzakciós oldalon, az időbélyegző újabb, mint az elején az olvasó, az adatokat ki kell venni a rollback szegmens (azaz egy „régi” változat). Ahhoz, hogy támogassák ezt a munkát végzik a tranzakciós napló, de ellentétben a „megelőző fakitermelés”, nem tartalmaz adatokat. Vele dolgozni áll három logikai lépésből áll:

  1. Vedd szándékkal, hogy bizonyos műveletek
  2. Ahhoz, hogy egy feladatot másolásával az eredeti változó oldalakat a rollback szegmens
  3. Írja, hogy minden helyesen tette

A tranzakciós log együtt rollback szegmens (egy olyan területen, amely tárolja egy példányát az összes módosított során a tranzakciós adatok) biztosítja az adatok integritását. A meghibásodás esetén behajtási eljárás indul, amely úgy néz ki, néhány bejegyzést az alábbiak szerint:

  • Ha a kár rekordot, a hiba idején amivel egy védjegy a folyóiratban. Tehát semmi fontos, hogy ne veszítse, hagyja figyelmen kívül ezt a hibát.
  • Ha minden bejegyzés jelzésű sikeresen befejeződött, a hiba közötti tranzakciók, szintén nincs veszteség.
  • Ha a magazin csonk ügylet, a hiba történt a felvétel a lemezen. Ebben az esetben mi helyreállítása a régi verziót az adatokat a rollback szegmens.