L'articolo suggerisce suggerimenti importanti per evitare i deadlock SQL Servers
Sebbene il SQL Server ha assistito a un'enorme evoluzione negli ultimi due anni, gli utenti affrontano ancora regolarmente la situazione di stallo. Idealmente, un server di database dovrebbe essere in grado di recuperare più richieste, ma spesso si ottengono blocchi. I conflitti in cui un processo attende il rilascio di un'altra risorsa sono chiamati blocchi. E poi ci sono i deadlock.
Immagina una situazione in cui una persona chiede alla seconda di rilasciare una risorsa e la seconda sta aspettando che la prima venga rilasciata. Di conseguenza, entrambi sono bloccati in una situazione di stallo. Nessuno dei processi può continuare poiché entrambi sono bloccati e richiedono all'altro di rilasciare la risorsa o il blocco.
Mentre lavori con SQL servers, i deadlock sono piuttosto comuni e possono ostacolare l'intero processo. Non è possibile evitare del tutto i deadlock, ma si può sicuramente ridurre al minimo la possibilità di creare un deadlock.
Problemi di stallo

Va notato che i deadlock influiscono direttamente sulle prestazioni e possono arrestare l'elaborazione del database.
1. Mantieni lo stesso ordine
I deadlock sono inevitabili se le risorse non vengono elaborate in un ordine ben definito. Per minimizzare i deadlock, tutte le transazioni simultanee dovrebbero accedere agli oggetti in un ordine prestabilito. Gli amministratori di database (DBA) dovrebbero definire un insieme chiaro di regole per l'accesso agli oggetti del database. Solitamente, i monitor di blocco eseguono un controllo dei deadlock e, quando ne rilevano uno, selezionano una delle vittime del deadlock e ne annullano la transazione. In questo modo, tutti i blocchi vengono rilasciati e le sessioni precedenti possono riprendere il processo. Le vittime del deadlock vengono scelte in base alla priorità di deadlock impostata dal server o al costo di rollback.
2. Limitazione durante la Transazione
Puoi limitare gli utenti a inserire qualsiasi tipo di dati durante l'elaborazione della transazione e puoi aggiornare i dati prima della transazione per evitare deadlock. Inoltre, cerca di mantenere l'interazione dell'utente a livelli minimi perché influisce sulla velocità. Idealmente, le transazioni dovrebbero essere brevi e veloci per evitare situazioni di stallo. Un'applicazione dovrebbe essere progettata in modo tale da afferrare i blocchi nel minor tempo necessario e rilasciarli il più rapidamente possibile.
3. NOLOCK Suggerimento
Quando qualcuno esegue una query su una tabella nel livello di isolamento predefinito SQL, la tabella viene bloccata e le query successive devono attendere il rilascio. NOLOCK Hint è utile in tali situazioni in quanto consente di ignorare il blocco della tabella e altre query ottengono un facile accesso.
4. Utilizzare connessioni associate
Se la stessa applicazione può aprire due o più connessioni che possono cooperare tra loro, allora non creerebbe deadlock. Ecco perché si consiglia di utilizzare le connessioni associate.
I deadlock non sono l'unica seccatura che potresti incontrare mentre lavori su un file SQL Server Banca dati. Infatti incidenti di corruzione sql è più probabile che ti causino dolore. Per evitare uno scenario di perdita di dati, investi in un potente strumento di ripristino come DataNumen SQL Recovery.
Introduzione dell'autore:
Victor Simon è un esperto di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui recupero mdb e prodotti software di recupero SQL. Per maggiori informazioni visita https://www.datanumen.com/