Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Perché una singola istruzione di eliminazione SQL causerà deadlock?

La solita risposta:dipende! :-)

Principalmente sulla quantità di traffico che hai sul tuo sistema e sul livello di isolamento delle transazioni che stai utilizzando.

Il livello di isolamento controlla come stai ricevendo i tuoi dati e quanto blocco sta succedendo. Se non hai mai sentito parlare dei livelli di isolamento delle transazioni, probabilmente stai usando l'impostazione predefinita - READ COMMITTED, che non dovrebbe essere un male scelta.

Tuttavia, se dovessi usare qualcosa come SERIALIZABLE per qualsiasi motivo, potresti non riscontrare deadlock, ma ritardi. La tabella potrebbe essere bloccata per un periodo di tempo fino al completamento dell'unica transazione. Se tutte le operazioni funzionano in questo ordine (prima elimina, quindi inserisci, quindi seleziona), non vedo come dovresti incontrare deadlock, davvero.

Leggi i livelli di isolamento delle transazioni SQL qui su www.sql-server- performance.com .