Inhaltsverzeichnis:

Was verursacht Datenbank-Deadlocks?
Was verursacht Datenbank-Deadlocks?

Video: Was verursacht Datenbank-Deadlocks?

Video: Was verursacht Datenbank-Deadlocks?
Video: SQL locking Blocking and Deadlock 2024, November
Anonim

EIN Sackgasse passiert, wenn sich zwei (oder mehr) Transaktionen gegenseitig blockieren, indem sie Sperren für Ressourcen halten, die jede der Transaktionen auch benötigt. Beispiel: Transaktion 1 hält eine Sperre für Tabelle A. Die meisten Leute werden das schreiben Sackgassen in einem Multi-User nicht zu vermeiden Datenbank.

Was sind Deadlocks in der Datenbank davon?

Blockaden . In einem Datenbank , ein Sackgasse ist eine Situation, in der zwei oder mehr Transaktionen darauf warten, dass die andere die Sperren aufgibt. Transaktion A kann beispielsweise einige Zeilen in der Tabelle "Accounts" sperren und muss einige Zeilen in der Tabelle "Orders" aktualisieren, um den Vorgang abzuschließen.

Wissen Sie auch, kann eine Auswahl einen Deadlock verursachen? 2 Antworten. Sackgasse passiert, wenn eine Abfrage eine Sperre für ein Objekt (Zeilen, Datenseiten, Extent, Tabellen usw.) erwirbt und eine andere Ressource versucht, darauf zuzugreifen. Die kleinste Einheit in SQL Server sind Datenseiten, und SQL hält eine Seite gesperrt, während sie daran arbeitet. Also, ja, es ist möglich, dass zwei auswählen Stellungnahme kann schaffen Sackgasse.

Wie können wir außerdem Deadlocks in der Datenbank verhindern?

Tipps zur Vermeidung von Deadlocks

  1. Stellen Sie sicher, dass das Datenbankdesign ordnungsgemäß normalisiert ist.
  2. Entwickeln Sie Anwendungen für den Zugriff auf Serverobjekte jedes Mal in derselben Reihenfolge.
  3. Lassen Sie während der Transaktionen keine Benutzereingaben zu.
  4. Vermeiden Sie Cursor.
  5. Halten Sie Transaktionen so kurz wie möglich.

Wie behebt man einen Deadlock?

Ein intelligenter Entwickler muss die folgenden Schritte ausführen, um einen Deadlock wiederherzustellen:

  1. Suchen Sie nach Fehlernummer 1205, wenn eine Ausnahme ausgelöst wird.
  2. Halten Sie die Anwendung kurz an, um der anderen Abfrage Zeit zu geben, ihre Transaktion abzuschließen und ihre erworbenen Sperren freizugeben.
  3. Wiederholen Sie die Abfrage, die von SQL Server zurückgesetzt wurde.

Empfohlen: