mittelding
2011-01-31, 15:13:13
Hallo erstmal,
gerade experimentiere ich wieder etwas mit Datenbanken (genau genommen Oracle XE) herum, um mein Wissen von der Vorlesung damals aufzufrischen, wäre schade wenn das verloren geht.
Da fiel mir spontan eine Thematik ein, die ich damals so hingenommen, aber nicht weiter verfolgt habe. Jetzt würde ich es aber doch gern genauer wissen.
Im wesentlichen geht es um Transaktionsmanagement.. genauer gesagt um den Fall, dass bei Verfahren wie dem 2 Phasen Sperrprotokoll ein Deadlock eintritt oder bei Verfahren wie MVCC die Kopie nicht zurückgeschrieben werden kann.
Damals hieß es, dass in einem solchen Fall eine der beteiligten Transaktionen wohl oder übel abgebrochen werden muss.
Das hat mich damals irgendwie sehr verwundert oder gar geschockt. Das heißt ja im wesentlichen, dass ich als DB-Benutzer alles richtig gemacht haben kann, die Maschine auch alles richtig gemacht haben kann, und ansonsten auch keine anderen Einwirkungen wie Hard- oder Softwarefehler auftreten und meine Anfrage trotzdem abgebrochen wird.
Habe ich da was falsch verstanden oder ist das tatsächlich so möglich?
Klar, als einzelner User wird man einen solchen Fehler nicht provozieren können (bezüglich Threadtitel).. aber bei hochfrequentierten Datenbanken mit unzähligen Benutzern müsste es doch vom Gefühl her dauernd krachen.
Bisher habe ich auf Clientseite in Java oder PHP immer Datenbankfehler abgefragt, aber neben semantischen Dingen dachte ich bisher immer, dass eigentlich nur tatsächliche technische Fehler ein Problem darstellen. In diesem Fall habe ich dann eine Meldung ausgegeben a la "error, please try again later". Aber wenn das wirklich so ist wie oben beschrieben, dann erfordert dass ja eine ganz andere herangehensweise in der Fehlerbehandlung meinerseits. Schließlich kann man dem User ja kaum per Fehlermeldung an den Kopf werfen, dass mit der DB eigentlich alles in Ordnung ist, sie aber trotzdem gerade keine Lust hatte, die Transaktion des Users auszuführen.
Danke
gerade experimentiere ich wieder etwas mit Datenbanken (genau genommen Oracle XE) herum, um mein Wissen von der Vorlesung damals aufzufrischen, wäre schade wenn das verloren geht.
Da fiel mir spontan eine Thematik ein, die ich damals so hingenommen, aber nicht weiter verfolgt habe. Jetzt würde ich es aber doch gern genauer wissen.
Im wesentlichen geht es um Transaktionsmanagement.. genauer gesagt um den Fall, dass bei Verfahren wie dem 2 Phasen Sperrprotokoll ein Deadlock eintritt oder bei Verfahren wie MVCC die Kopie nicht zurückgeschrieben werden kann.
Damals hieß es, dass in einem solchen Fall eine der beteiligten Transaktionen wohl oder übel abgebrochen werden muss.
Das hat mich damals irgendwie sehr verwundert oder gar geschockt. Das heißt ja im wesentlichen, dass ich als DB-Benutzer alles richtig gemacht haben kann, die Maschine auch alles richtig gemacht haben kann, und ansonsten auch keine anderen Einwirkungen wie Hard- oder Softwarefehler auftreten und meine Anfrage trotzdem abgebrochen wird.
Habe ich da was falsch verstanden oder ist das tatsächlich so möglich?
Klar, als einzelner User wird man einen solchen Fehler nicht provozieren können (bezüglich Threadtitel).. aber bei hochfrequentierten Datenbanken mit unzähligen Benutzern müsste es doch vom Gefühl her dauernd krachen.
Bisher habe ich auf Clientseite in Java oder PHP immer Datenbankfehler abgefragt, aber neben semantischen Dingen dachte ich bisher immer, dass eigentlich nur tatsächliche technische Fehler ein Problem darstellen. In diesem Fall habe ich dann eine Meldung ausgegeben a la "error, please try again later". Aber wenn das wirklich so ist wie oben beschrieben, dann erfordert dass ja eine ganz andere herangehensweise in der Fehlerbehandlung meinerseits. Schließlich kann man dem User ja kaum per Fehlermeldung an den Kopf werfen, dass mit der DB eigentlich alles in Ordnung ist, sie aber trotzdem gerade keine Lust hatte, die Transaktion des Users auszuführen.
Danke