Sommario:

Quali sono le cause dei deadlock del database?
Quali sono le cause dei deadlock del database?

Video: Quali sono le cause dei deadlock del database?

Video: Quali sono le cause dei deadlock del database?
Video: Deadlocks. Understanding and Troubleshooting - Denis Reznik 2024, Novembre
Anonim

UN situazione di stallo si verifica quando due (o più) transazioni si bloccano a vicenda mantenendo blocchi su risorse di cui ciascuna transazione ha bisogno. Ad esempio: la transazione 1 mantiene un blocco sulla tabella A. La maggior parte delle persone scriverà che deadlock non può essere evitato in un multiutente Banca dati.

Quindi, cosa sono i deadlock nel database?

deadlock . In un Banca dati , un situazione di stallo è una situazione in cui due o più transazioni sono in attesa l'una dell'altra per rinunciare ai blocchi. Ad esempio, la transazione A potrebbe contenere un blocco su alcune righe nella tabella Conti e per completare l'operazione deve aggiornare alcune righe nella tabella Ordini.

Inoltre, sappi che una selezione può causare un deadlock? 2 risposte. deadlock si verifica quando una query acquisisce un blocco su un oggetto (righe, pagine dati, estensione, tabelle ecc.) e un'altra risorsa tenta di accedervi. L'unità più piccola in SQL Server sono le pagine di dati e SQL mantiene un blocco sulla pagina mentre ci lavora. Quindi, sì, è possibile che due Selezionare dichiarazione Potere creare situazione di stallo.

Inoltre, come possiamo prevenire il deadlock nel database?

Suggerimenti per evitare i deadlock

  1. Assicurati che il design del database sia correttamente normalizzato.
  2. Sviluppa applicazioni per accedere agli oggetti del server nello stesso ordine ogni volta.
  3. Non consentire alcun input da parte dell'utente durante le transazioni.
  4. Evita i cursori.
  5. Mantieni le transazioni il più brevi possibile.

Come si risolve una situazione di stallo?

Uno sviluppatore intelligente deve eseguire i seguenti passaggi per recuperare da un deadlock:

  1. Verificare il numero di errore 1205, quando viene generata un'eccezione.
  2. Sospendi brevemente l'applicazione per dare all'altra query il tempo di completare la transazione e rilasciare i blocchi acquisiti.
  3. Invia nuovamente la query, di cui è stato eseguito il rollback da SQL Server.

Consigliato: