Quindi, a quanto ho capito, i deadlock SQL si verificano quando uno SPID è impegnato a elaborare un'altra query e non può essere disturbato a eseguirne un altro perché è così occupato in questo momento. SQL Server "casualmente" seleziona una delle query per deadlock delle risorse richieste e fallisce, generando un'eccezione.Perché i deadlock si verificano in SQL Server?
Ho un'app in esecuzione ~ 40 istanze e un servizio Windows back-end, che stanno tutti colpendo lo stesso database. Sto cercando di ridurre i deadlock in modo da poter aumentare il numero di thread che posso eseguire contemporaneamente.
- Perché SQL Server non può semplicemente accodare la nuova query ed eseguirla quando ha tempo e le risorse sono disponibili? La maggior parte di quello che sto facendo può aspettare qualche secondo in occasione.
- C'è un modo per impostare il livello di isolamento a livello globale senza doverlo specificare all'inizio di ogni nuova connessione/sessione?
La tua definizione di 'deadlock' non è corretto. Normalmente SQL Server ** fa ** aspetta altre richieste. Quando uccide una query perché rileva una condizione di deadlock è perché la serie di query specificata non può essere completata (mai) e qualcuno deve perdere. Penso che se fai un po 'di lettura su quali sono i deadlock, ti troverai in una posizione molto migliore per ottenere il valore da una domanda migliore –
"Così come la capisco" ... il resto di quel paragrafo è praticamente errato . – heisenberg
I deadlock non hanno nulla a che fare con il server che è troppo occupato per soddisfare una richiesta. Ti suggerisco di ripubblicare la tua domanda o di andare a vedere che cos'è un deadlock. – sqlvogel