18 Stimmen

Deadlocks in der Datenbank

Einer der klassischen Gründe für einen Datenbank-Stopp ist, dass zwei Transaktionen Tabellen in unterschiedlicher Reihenfolge einfügen und aktualisieren.

Beispiel: Transaktion A fügt zunächst in Tabelle A und dann in Tabelle B ein.

Und Transaktion B fügt in Tabelle B ein, gefolgt von A.

Bei einem solchen Szenario besteht immer die Gefahr eines Datenbank-Stopps (vorausgesetzt, Sie verwenden keine serialisierbare Isolationsebene).

Meine Fragen sind:

  1. Welchen Mustern folgen Sie bei Ihrem Entwurf, um sicherzustellen, dass alle Transaktionen in der gleichen Reihenfolge eingefügt und aktualisiert werden? In einem Buch, das ich gelesen habe, wurde vorgeschlagen, dass man die Anweisungen nach dem Namen der Tabelle sortieren kann. Haben Sie etwas Ähnliches oder etwas anderes gemacht, das sicherstellt, dass alle Einfügungen und Aktualisierungen in der gleichen Reihenfolge erfolgen?

  2. Was ist mit dem Löschen von Datensätzen? Das Löschen muss von untergeordneten Tabellen ausgehen, und Aktualisierungen und Einfügungen müssen von übergeordneten Tabellen ausgehen. Wie stellen Sie sicher, dass dies nicht zu einem Deadlock führt?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X