15/03/2024

Der Albtraum der Datenbank-Deadlocks

Ein Datenbank-Deadlock tritt auf, wenn zwei oder mehr Transaktionen in einem Datenbanksystem Sperren für Ressourcen halten, die die anderen benötigen. Jede Transaktion wartet darauf, dass die anderen ihre Sperren freigeben, und genauso wie zwei Autofahrer, die nicht sicher sind, wer Vorfahrt hat, kann keiner weiterfahren.

Es wäre schön, wenn man die Ursachen für einen Datenbank-Deadlock aufzählen und alle angehen könnte. Leider ist das viel zu komplex. Man kann jedoch sagen, dass ein Datenbank-Deadlock höchstwahrscheinlich auf eine schlechte Anwendungsarchitektur, mangelndes ordnungsgemäßes Transaktionsmanagement oder die unvermeidliche Komplexität hochkonkurrierender Systeme zurückzuführen ist.

Transaktionen, die Ressourcen in inkonsistenten Reihenfolgen sperren, sind besonders anfällig für Deadlocks. Zum Beispiel führt ein Deadlock auf, wenn Transaktion A Ressource 1 sperrt und dann versucht, Ressource 2 zu sperren, während Transaktion B Ressource 2 sperrt und dann versucht, Ressource 1 zu sperren, wenn beide Transaktionen gleichzeitig auftreten.

Mehr im englischsprachigen Beitrag:
https://dbplus.tech/en/2024/03/14/the-nightmare-of-database-deadlocks/