FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Praktische Informatik

Isolation von Transaktionen

Isolation von Transaktionen 2006-11-07 19:19
Hackbert
Moin moin!
Eine Frage mal zu Transaktionen:

Angenommen ich habe eine Transaktion T1, die zum Zeitpunkt t1 beginnt. Während dieser Transaktion verändert eine andere Transaktion T2 Daten in der Datenbank und commited. Wenn die Transaktion T1 nun aus der Datenbank liest, liest sie dann den neuen oder den alten Wert?

Re: Isolation von Transaktionen 2006-11-07 19:48
Zaphod
Das hängt doch davon ab, zu welchem Zeitpunkt T1 liest..?
sei t1 der Zeitpunkt, an welchem T1 liest. t2 sei der Zeitpunkt, an dem T2 schreibt.

t1 < t2: T1 liest den alten Wert
t1 > t2: T2 liest den neuen Wert –> T1 muss zurückgesetzt werden.

t1 = t2: ist hoffentlich ausgeschlossen.

Re: Isolation von Transaktionen 2006-11-07 20:06
Hackbert
Ok, das wollte ich wissen. Danke!

Re: Isolation von Transaktionen 2006-11-08 14:57
Hackbert
Jetzt habe ich jemanden gefunden, der das Gegenteil behauptet und schon viel mit Datenbanken gemacht hat. Nochmal die Fragestellung:

Ich habe eine Transaktion T1, die zum Zeitpunkt t1 beginnt und zum Zeitpunkt t3 Daten liest. Zum Zeitpunkt t2 verändert eine andere Transaktion T2 Daten in der Datenbank.

T1 t1 BOT|——————– t3 ——–|COMMIT
T2 ………BOT|—t2——|COMMIT

(Punkte dienen nur als Abstände)

Sagen wir mal, dass A=1 zum Zeitpunkt t1 gilt. T2 schreibt zum Zeitpunkt t2 A:=2 und commitet zum Zeitpunkt t3. Die Transaktion T1 liest nun A zum Zeitpunkt t3. Lies T1 nun A=1 oder A=2?

Re: Isolation von Transaktionen 2006-11-08 15:22
Viprex
Ich würde sagen: T1 liest A=2, sofern dort keine Sicherheitsmechanismen eingebaut sind oder Konzepte wie ACID befolgt werden. Sollte ACID hier gelten, dann kann T2 an t2 gar nicht schreiben, weil die Transaktionen Isoliert voneinander laufen.

Nachfolgendes bezieht sich nicht direkt auf deine Frage!
Allerdings kann man die Aufgabe auf viele verschiedene Arten lesen. T2 muss nicht zu t3 committen, sondern kann auch nach dem EOT von T1 erst das commit setzen.
Es kann aber auch sein, dass T2 vor T1 beginnt. Dann sähe nach ACID Gesichtspunkten das wieder anders aus, denn dann dürfte T1 ja gar nicht loslegen?!

Ich finde, das ist in der Aufgabestellung völlig offen. Da muss man dann ne schöne Fallunterscheidung einbauen.

Re: Isolation von Transaktionen 2006-11-08 15:30
Hackbert
Transaktionen, die nicht nach dem ACID-Prinzip laufen? Hat er erwähnt, dass es sowas gibt?

Re: Isolation von Transaktionen 2006-11-08 17:26
Viprex
Höh? redest du nicht von den Aufgabe aus dem aktuellen Aufgabezettel? Dort geht es doch immer um ACID und co.?

Re: Isolation von Transaktionen 2006-11-08 17:29
Hackbert
Was hast Du denn geantwortet?

Re: Isolation von Transaktionen 2006-11-08 18:17
Viprex
lol ;-)

Ich habe in deinem vorherigen Posting das "nicht" überlesen. Sorry für die Verwirrung. ist alles ok.

Naja, ich weiß nicht ob es sowas gibt. Aber wenn diese nach ACID laufen, dann kann doch T2 gar nicht den Wert von A verändern, wenn T1 noch läuft (je nachdem welche Transaktion zuerst gestartet ist?)

Re: Isolation von Transaktionen 2006-11-08 18:21
Hackbert
Aber wenn es so ist, wie Du sagst, dann verstehe ich nicht, warum unten steht: "Welche Probleme werden an dieser Stelle deutlich?". Es mus ja einen Haken geben. Ansonsten wäre alles "Friede, Freude, Eierkuchen".

Ich tendiere derzeit zu einer Lösung, in der auf die verschiedenen Transaktionelevel eingegangen wird (siehe http://de.wikipedia.org/wiki/Isolation_%28Datenbank%29 )

Edit: Habe mir gerade nochmal Folie 26 in Kapitel 2 angeschaut. Dort wird mit dem Schreiben solange gewartet, bis die Transaktion vorher abgeschlossen wurde.

Re: Isolation von Transaktionen 2006-11-08 19:22
Anonymer User
Das Problem ist dann wahrscheinlich das T2 nicht ausgeführt wird

Re: Isolation von Transaktionen 2006-11-08 20:32
Viprex
Du redest dann also von Aufgabe 3. Ich habe mich immer auf Aufgabe 2b bezogen ;-) Geht ja um die selben Transaktionen, nur andere Fragestellung.

Zu 2b: Dort sollen wir ja auch nur feststellen, welche ACID Eigentschaft verletzt wird. So stehts ja da.

Zu Aufgabe 3: Es geht dort ja nur um 2 Transaktionen. Dort steht ja nichts von einem DBS. Also muss dort ja auch ACID nicht gelten. Es wird ja nur gefragt, welche Werte A B und C haben, wenn die Transaktionen so laufen, wie sie dort stehen. Beide haben einen EOT, damit haben beide einen Commit gesetzt. Es steht nichts davon da, dass eine Transaktion abbricht. Beide laufen einfach parallel.
Also Werte ausrechnen und einfach sagen, was daran doof ist, wenn das so läuft wie es dort aufgemalt ist. Mehr nicht.

Ich denke, in einem richtigen DBS sollte das so nicht passieren. Dort sollte T2 keinen Zugriff auf A bekommen, solange T1 noch läuft. Das wäre nach ACID korrekt. So kann man es dann ja auch begründen, denke ich.

Re: Isolation von Transaktionen 2006-11-09 14:59
cheek
Also es haengt davon ab je nahcdem welches Isolations Level man eingestellt hat, wir sollen in den Aufgaben annehmen das wir das hoechste llevel eingestellt haben, d.h. Serialisierung.
Da wuerde T2 warten bis T1 vollstaendig durchgelaufen ist, da ansonsten nen Dirty Read passieren wuerde, was glaube ich genau das Problem von den Leuten ist die sich in dem Punkt evt schon nen bissl auskennen.

Da ACID nur zu 100% eingehalten wird wenn man die hoechste Stufe benutzt allerdings hat das eben auch krasse Performance Unterschiede welche man bei produktiv Systemen beachten sollte!

hoffe ds das evt bissl geholfen hat

gruss
cheek