Forum: PC-Programmierung MySQL und Transactions


von Fetzenstein (Gast)


Lesenswert?

Guten Morgen!

zum Schreiben von Daten gibts bei MySQL ja Transactions, mit denen 
mehrere Schreiboperationen zu einer atomaren ausgeführten 
Schreiboperationen zusammengefasst - oder im Fehlerfall verworfen 
werden.

Gibt's für's Lesen eigentlich auch sowas?

D.h. angenommen, ich hab Daten, die liegen in 2 Tabellen. Ich würde nun 
gerne meine MYSQL-Abfragen atomar ausführen, d.h. zwischen query 1 und 
query 2 darf niemand was in eine der beide Tabellen reinschreiben, weil 
sonst meine Ergebnisse inkonsistent werden.

Ich verwende übrigens JDO + Datanucleus + MySQL unter Java.

Grüße,
Fetz von Fetzenstein

von Peter (Gast)


Lesenswert?

Wenn jemand in die Tabellen mit einer Transaktion reinschreibt dann 
kannst du sie im normalfall eh nicht lesen. Ausser die liest mit 
"uncommitted read"

von Claudio H. (bastelfinger)


Lesenswert?

Du kannst das "Transaction-Level" setzen, damit hast du 
Einflussmöglichkeit.

Schreib mal mehr zu deiner Architektur, dann kann man dir noch besser 
helfen.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Transaktionen gibt es auch fürs lesen, wieso auch nicht, je nach 
Transaktionsmodus kreigst du dan erstmal vom Schreiben anderer nix mit. 
Nur kannst du das ganze nicht "verwerfen" oder "annehmen" das ist auch 
nur beim schreiben sinnvoll.
Am Einfachsten geht es allerdings wenn du von vornherein deine Daten 
zusammen abfragst (z.B. über einen Join).
JDO sollte das aber (eigentlich) von selbst handhaben.

von Claudio H. (bastelfinger)


Lesenswert?

Schau dir das Interface "javax.jdo.Transaction" an, da kannst du alles 
konfigurieren.

von Fetzenstein (Gast)


Lesenswert?

Läubi .. schrieb:
> Transaktionen gibt es auch fürs lesen, wieso auch nicht, je nach
> Transaktionsmodus kreigst du dan erstmal vom Schreiben anderer nix mit.
> Nur kannst du das ganze nicht "verwerfen" oder "annehmen" das ist auch
> nur beim schreiben sinnvoll.
> Am Einfachsten geht es allerdings wenn du von vornherein deine Daten
> zusammen abfragst (z.B. über einen Join).
> JDO sollte das aber (eigentlich) von selbst handhaben.

Ich hab jetzt endlich rausgefunden wie man richtige SQL-Abfragen mit JDO 
ausführt und das funktioniert sogar.

Jetzt kann ich ganz gewohnt meine Tables joinen und alles in einem 
Rutsch erledigen ...

Danke für den Denkanstoß!

Grüße,
Fetz

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.