Optimista konkurenciavezérlés Léteznek zárolás nélküli módszerek is a tranzakciók sorba rendezhetségének a biztosítására. idpecsét érvényesítés. Optimista: feltételezik, hogy nem fordul el nem sorba rendezhet viselkedés. ha netán mégis elfordul, akkor az optimista megközelítések egyetlen megoldása, hogy azt a tranzakciót, amelynek a viselkedése nem sorba rendezhet abortálja (visszagörgeti) és utána újraindítja. A zárolási ütemezk késleltetik a tranzakciókat.
Konkurenciavezérlés idpecsét módszerrel ütemezés alapelve: minden tranzakcióhoz rendel egy születési dátumot, vagy idpecsétet, amely jelzi, hogy mikor is jött létre a tranzakció a többi tranzakcióhoz viszonyítva. az idpecsét egy sorszámnak is tekinthet, amely megadja, hogy hol helyezkedik el a tranzakció a többi tranzakcióhoz viszonyítva a létrehozási idpont tekintetében: korábban létrejött tranzakció idpecsétje kisebb, késbb létrejött tranzakció idpecsétje nagyobb. Az idpecsét generálását a rendszeróra segítségével oldják meg vagy az ütemez egy számlálót tart karban, mely 1-el növekszik, akárhányszor egy tranzakció indul. Jelöljük TS(T)-el a T tranzakcióhoz rendelt idpecsétet (timestamp).
A tranzakciókezel filozófiája az idpecsét módszer esetén: a különböz tranzakciókhoz tartozó egymással konfliktusban álló mveletek esetén a mveletek végrehatási sorrendje feleljen meg a tranzakciók idpecsét sorrendjének. azon mveleteknek kell elbb végrehajtódniuk, amelyek idpecsétje kisebb. ha a tranzakciókezel a végrehajtás során olyan kísérletet tapasztal, hogy egy tranzakció olyan adatbáziselemet akar olvasni vagy módosítani, melyet egy fiatalabb tranzakció már egyszer módosított, akkor ezen mveletet megakadályozza, méghozzá úgy, hogy ezen idsebb tranzakciót abortálja. a visszagörgetés után újraindítja a tranzakciót, amely most egy nagyobb idpecséttel újrapróbálkozhat a mveletek végrehajtásával.
A zárolás és idpecsét alapú módszerek közötti különbségek: a zárolásnál a lefoglalás felengedése után bármely tranzakció hozzáférhet az adatbáziselemhez, az idpecsét módszer esetén nincs lezárás, az adatbáziselem bármikor elérhet, viszont csak azon tranzakciók férhetnek hozzá, melyek fiatalabbak, mint az utolsó foglalást végz tranzakció. a zárolás hátránya, hogy sokat várakoztat, és holtpont léphet fel, az idpecsét hátránya, hogy túlságosan könnyen kerülhet abortálásra egy tranzakció. az idpecséten alapuló módszer akkor jobb, ha sok tranzakció csak olvasási. az idpecsét esetén nincs várakozás, de hibák léphetnek fel, mivel nem azt figyeli, hogy az adatbáziselem feldolgozás alatt áll-e vagy sem, hanem csak az utolsó hozzáférést végz tranzakció idpecsétjét figyeli.
Az idpecsét sorrenden alapuló ütemezés esetén a mködés alapelve: tudnunk kell, mely tranzakció használta az egyes adatbáziselemet utoljára, ezért nyilván kell tartani az utolsó hozzáféréseket. az ütemez ezen jelz és az új igénnyel fellép tranzakció idpecsétjének összehasonlítása alapján dönti el, hogy engedélyezi-e az adatbáziselemhez való hozzáférést, vagy abortálnia kell az igényl tranzakciót. külön nyilván kell tartani mind az olvasásra, mind az írásra, hogy mely idpecsét tranzakció volt az utolsó engedélyezett mvelet igénylje. Ezen jelzknek egyre növeked értékeket kell tartalmazniuk.
Minden X adatbáziselemhez két idpecsétet társítanak, és egy bitet. 1. RT(X), az X olvasási ideje (read time), mely a legnagyobb idbélyegz, ami ahhoz a tranzakcióhoz tartozik, mely utoljára olvasta az X adatbáziselemet. 2. WT(X), az X írási ideje (write time), mely a legnagyobb idbélyegz, ami ahhoz a tranzakcióhoz tartozik, mely utoljára írta az X adatbáziselemet. 3. C(X), az X véglegesítési bitje (commit bit), melynek értéke akkor 1, ha a legújabb tranzakció, amely az X-et írta, már véglegesítve van. Ennek a bitnek az a célja, hogy elkerüljük azt a helyzetet, amelyben egy T tranzakció egy másik U tranzakció által írt adatokat olvas be és utána az U-t abortáljuk. (piszkos adat olvasása).
Az idpecséten alapuló ütemezés esetén felmerül problémák: a) Túl kési olvasás: egy T tranzakció megpróbálja olvasni az X adatbáziselemet, de az X írási ideje nagyobb, mint a T idpecsétje, vagyis WT(X) > TS(T), azt jelenti, egy fiatalabb tranzakció már módosította az X-et. legyen U a tranzakció, mely módosította az X-et. mivel U-t T után indítottuk, T az U által írt értéket olvasná, viszont T- nek azt az értéket kellett volna olvasnia, mely U módosítása eltt volt, ez viszont már nem ismert, ezért T-t az ütemez visszagörgeti.
b) Túl kési írás: T tranzakció megpróbálja írni az X adatbáziselemet, az X olvasási ideje azt mutatja, hogy egy másik tranzakció, mely a T által beírt értéket kellett volna olvasnia, mivel fiatalabb a T-nél, már beolvasta az X értékét, még mieltt T-nek sikerült volna írni az X-et: TS(T) < RT(X). c) Piszkos adat olvasás: A T tranzakció olvassa az X adatbáziselemet, melyet utoljára az U tranzakció írt (TS(U) < TS(T)) és nem is lenne semmi baj, ha U-t nem pörgetné vissza valamilyen hiba miatt a rendszer. ajánlott a T olvasását akkorra halasztani, mikor U véglegesítve van a véglegesítési bit segítségével oldja meg az ütemez a feladatot.
Az idpecséten alapuló ütemezés szabályai: Legyen egy T tranzakció, mely olvasási vagy írási kéréssel fordul az ütemezhöz. Az ütemez választásai a következk lehetnek: Engedélyezi a kérést. Visszagörgeti T-t, ha az idpecsétje megsérti a szabályokat és egy új idbélyegzvel újraindítja. Késlelteti T-t és késbb dönti el, hogy abortálja-e vagy engedélyezi T- t.
Az abortálások számának csökkentésére számos elgondolás született, mindenik alapja a tranzakciók konkurenciájának a csökkentése. Egyik megoldás: az ütemez létrehoz egy várakozó listát, a végrehajtásra jelentkez mveletekkel a várakozó mveletek végrehajtása során a bejegyzett mveletek közül mindig a legkisebb sorszámú mveletet veszi sorra. biztosítható a mveletek soros végrehajtása, mert egy T tranzakció els mvelete csak akkor kerülhet végrehajtásra, ha a rendszerben már nem létezik nála kisebb idpecséttel rendelkez és még futó tranzakció. ha a tranzakció megkapta a vezérlést, nem engedi el, míg maga be nem fejezdik, a késbb keletkez tranzakciók mindig egyre növekv idpecsétet, azaz sorszámot kapnak. De így már ez a módszer esetén is megjelenik a várakozás.
Szabályok, melyet az idpecséten alapuló ütemez betart: 1. Legyen r T (X) az ütemezhöz érkez kérés. a) Ha TS(T) WT(X) az olvasás megvalósítható. Ha C(X) = 1 az ütemez engedélyezi a kérést. ha TS(T) > RT (X), akkor RT(X) : = TS(T) különben RT(X) nem változik. különben késlelteti T-t, amíg C(X) értéke 1 lesz vagy az X-et író tranzakció abortál. b) különben az olvasás fizikailag nem megvalósítható. az ütemez T-t visszagörgeti, majd újraindítja nagyobb idpecséttel.
2. Ha az ütemezhöz érkez kérés w T (X), a) Ha TS(T) RT(X) és TS(T) WT(X), az írás fizikailag megvalósítható. X új értékét beírjuk. WT(X) := TS(T). C(X) := 0. b) Ha TS(T) RT(X) és TS(T) < WT(X), az írás fizikailag megvalósítható, de X-nek már egy késbbi értéke van. Ha C(X) = 1, X elz írását végz tranzakció véglegesítve van, T írását egyszeren figyelmen kívül hagyjuk (egy fiatalabb tranzakció által írt érték a helyes), az ütemez engedi, hogy T folytatódjon. különben késlelteti T-t addig, amíg C(X) értéke 1 lesz vagy az X-et író tranzakció abortál.
c) Ha TS(T) < RT(X), az írás fizikailag nem megvalósítható az ütemez T-t visszagörgeti. 3. Legyen az ütemezhöz érkez kérés T véglegesítése. Az ütemez a karbantartási listája alapján megkeresi az összes olyan X adatbáziselemet, amelybe T írt és a C(X)-et 1-re állítja. Az ütemez egy másik listájában megkeresi azon tranzakciókat, melyek a T által írt X adatbáziselemek véglegesítésére vártak, ezeknek megengedi, hogy folytatódjanak. 4. Legyen az ütemezhöz érkez kérés a T visszagörgetése. (1-es és 2-es esetben is elfordult). Minden olyan tranzakcióra, amely T tranzakció írásaira várakozott, az ütemez meg kell ismételje azok írási vagy olvasási kísérleteit.
példa: T 1 T 2 T 3 X Y Z 15 20 25 RT = 0 WT = 0 RT = 0 WT = 0 RT = 0 WT = 0 r 1 (Z); w 1 (Z); r 2 (Y); w 2 (X); rollback r 3 (X); RT = 25 RT = 20 RT = 15 WT = 15 w 3 (Z); WT = 25
w 1 (Z) végrehajtható, TS(T 1 ) = RT(Z) és TS(T 1 ) WT(Z), (2.a.) w 2 (X): TS(T 2 ) < RT(X), az írás nem megvalósítható, (2.c) w 3 (Z) : TS(T 3 ) > RT(Z) és TS(T 3 ) > WT(Z), az írás megvalósítható. A kereskedelmi rendszerek egy kompromisszumot alkalmaznak a zárolás és idpecséten alapuló módszer között. lehetséget adnak a felhasználónak, hogy a tranzakciót csak olvasásinak (READ ONLY) vagy olvasási/írási tranzakciónak deklarálja. a csak olvasási tranzakciókat az idpecséten alapuló módszerrel hatják végre, az olvasási/írási tranzakciók esetén pedig a kétfázisú zárolást alkalmazzák és a csak olvasási tranzakciók ell is lezárják az olvasási/írási tranzakciók által használt adatbáziselemeket.
Módszerek a konkurenciavezérlésre: zárolás és idbélyegz, mindegyiknek vannak elnyei. tár felhasználása: mindegyik az összes aktív tranzakciók által hozzáfért adatbáziselemek számának az összegével arányos megközelítleg. az idbélyegzés kicsit több helyet használ, mivel nyomon kell kövessék a korábban véglegesített tranzakciók bizonyos hozzáféréseit.
késleltetés nélkül fejezdnek-e be a tranzakciók: egy módszer hatékonysága attól függ, hogy a tranzakciók közötti egymásra hatás ers vagy gyenge, vagyis milyen valószínséggel akar egy tranzakció hozzáférni olyan elemhez, amelyhez egy konkurens tranzakció már hozzáfért. a zárolás késlelteti a tranzakciókat, azonban elkerüli a visszagörgetéseket, még ha ers is az egymásra hatás. az idbélyez nem késlelteti a tranzakciókat, azonban visszagörgetést okozhat, amely a késleltetésnek egy problémásabb formája és még erforrásokat is pazarol. ha gyenge a tranzakciók közötti egymásra hatás, akkor az idbélyegzés, nem okoz sok visszagörgetést és elnyösebb lehet a zárolásnál.