Nichtwiederholbares Lesen

Nichtwiederholbares Lesen

Nichtwiederholbares Lesen oder Non-Repeatable Read bezeichnet in der Informatik ein Problem, das auftritt, wenn innerhalb einer Transaktion dieselbe Leseoperation nacheinander unterschiedliche Ergebnisse liefert.

Beispiel

Diese Transaktion könnte bei einem Wiki dazu eingesetzt werden, eine einfache Benutzerstatistik zu erstellen:

Transaktionsanfang
Selektiere alle Benutzernamen mit weniger als fünf eingestellten Artikeln (Aktion 1a)
Gib die Liste der faulen Benutzer aus
Selektiere alle Benutzerdatensätze mit weniger als fünf eingestellten Artikeln (Aktion 1b)
Gib für diese Benutzer eine genauere Aufschlüsselung aus (Alter des Kontos, genaue Anzahl der Artikel usw.)
Transaktionsende

Gleichzeitig könnte die folgende Transaktion Bestandteil der bei Einstellen eines neuen Artikels ablaufenden Operationen sein:

Transaktionsanfang
Füge neuen Artikel ein (Aktion 2a)
Erhöhe Anzahl der eingestellten Artikel des einstellenden Benutzers (Aktion 2b)
Transaktionsende

Wenn ein Benutzer sich nun die Statistik anzeigen lässt, während ein anderer Benutzer gleichzeitig seinen fünften neuen Artikel einstellt, kann es zu dem folgenden Ablauf kommen. Hierbei würde der einstellende Benutzer lediglich in der Liste der faulen Benutzer angezeigt, bei der genaueren Aufschlüsselung (Ergebnis von Aktion 1b) würde er aber fehlen:

Zeitpunkt Transaktion 1 Transaktion 2 Wirkung
1 Aktion 1a Aktion 2a Benutzer wird angezeigt: Der Artikelzähler steht nur auf 4
2 Aktion 2b Artikelzähler wird auf 5 erhöht
3 Aktion 1b Benutzer ist nicht enthalten: Er hat nicht mehr weniger als 5 Artikel eingestellt

Je nach Umsetzung in der Software ist dies eine ernstzunehmende Fehlerquelle, da sich die Software beispielsweise darauf verlassen könnte, für alle zu Beginn gelesenen Benutzer weitere Informationen zu erhalten und nicht mit fehlenden Daten für einen Benutzer umgehen könnte.

Abhilfe

Datenbanken bieten üblicherweise die Möglichkeit der Transaktionsisolation. Bei Isolation durch Serialisierung könnte der obige Ablauf beispielsweise wie folgt aussehen; die Leseoperation wird wiederholbar:

Zeitpunkt Transaktion 1 Transaktion 2 Wirkung
1 Aktion 1a Aktion 2a Benutzer wird angezeigt: Der Artikelzähler steht nur auf 4
2 Aktion 2b Benutzertabelle gesperrt: Transaktion muss warten
3 Aktion 1b Benutzer wird ausgegeben, da Zähler noch nicht erhöht
4 Aktion 2b Transaktion wird fortgeführt, Zähler wird erhöht

Siehe auch


Wikimedia Foundation.

См. также в других словарях:

  • Non-Repeatable Read — Nichtwiederholbares Lesen oder Non Repeatable Read bezeichnet in der Informatik ein Problem, das auftritt, wenn innerhalb einer Transaktion dieselbe Leseoperation nacheinander unterschiedliche Ergebnisse liefert. Beispiel Diese Transaktion könnte …   Deutsch Wikipedia

  • Lost Update — Verlorenes Update (auch engl. Lost Update) bezeichnet in der Informatik einen Fehler, der bei mehreren parallelen Schreibzugriffen auf eine gemeinsam genutzte Information auftreten kann. Wenn zwei Transaktionen dieselbe Information verändern,… …   Deutsch Wikipedia

  • Verlorene Updates — Verlorenes Update (auch engl. Lost Update) bezeichnet in der Informatik einen Fehler, der bei mehreren parallelen Schreibzugriffen auf eine gemeinsam genutzte Information auftreten kann. Wenn zwei Transaktionen dieselbe Information verändern,… …   Deutsch Wikipedia

  • ACID (Informatik) — ACID, deutsch auch AKID, ist ein Akronym in der Informatik. Es beschreibt erwünschte Eigenschaften von Transaktionen in Datenbankmanagementsystemen (DBMS) und verteilten Systemen. Es steht für atomicity, consistency, isolation und durability. Man …   Deutsch Wikipedia

  • Dirty Read — Ein Schreib Lese Konflikt (auch Dirty Read) tritt in der Informatik auf, wenn von zwei gleichzeitig ablaufenden Transaktionen die eine Daten liest, die von der anderen geschrieben werden, jedoch noch nicht bestätigt (committed) sind. Beispiel Die …   Deutsch Wikipedia

  • Verlorenes Update — (auch engl. Lost Update) bezeichnet in der Informatik einen Fehler, der bei mehreren parallelen Schreibzugriffen auf eine gemeinsam genutzte Information auftreten kann. Wenn zwei Transaktionen dieselbe Information verändern, dann können die… …   Deutsch Wikipedia

  • ACID — ACID, deutsch auch AKID, ist eine Abkürzung in der Informatik. Es beschreibt erwünschte Eigenschaften von Verarbeitungsschritten in Datenbankmanagementsystemen (DBMS) und verteilten Systemen. Es steht für Atomicity, Consistency, Isolation und… …   Deutsch Wikipedia

  • Phantomproblem — In der Informatik ist das Phantomproblem (inconsistent read) ein Fehler, der bei mehreren parallelen Datenbankzugriffen auftreten kann. Werden während einer Transaktion, die sich auf mehrere Datensätze mit einer angegebenen Eigenschaft bezieht,… …   Deutsch Wikipedia

  • Schreib-Lese-Konflikt — Ein Schreib Lese Konflikt (auch Dirty Read) tritt in der Informatik auf, wenn von zwei gleichzeitig ablaufenden Transaktionen die eine Daten liest, die von der anderen geschrieben werden, jedoch noch nicht bestätigt (committed) sind. Beispiel Die …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»