Informazioni sui deadlock di SQL
Un “Deadlock SQL” si verifica in Microsoft Dynamics 365 Business Central quando due o più processi sono in attesa di risorse che sono bloccate l’una dall’altra. In questa situazione, nessuna delle transazioni coinvolte può procedere perché ognuna è in possesso di una risorsa di cui l’altra ha bisogno. Per risolvere il conflitto, il server SQL seleziona automaticamente un processo come vittima del deadlock e lo termina annullando la transazione. L’altro processo è quindi in grado di continuare le modifiche richieste.
Impatto dei deadlock SQL
- Non si verificano perdite di dati, poiché il codice Dynamics AL ben progettato e le transazioni SQL che ne derivano sono progettati per eseguire un rollback pulito in caso di guasto.
- Per gli utenti finali, ad esempio quando si utilizza il client Web, uno stallo si tradurrà in un messaggio di errore. L’utente deve quindi ripetere l’azione.
Evitare i blocchi morti
- Un ordine di blocco coerente tra i processi può evitare la maggior parte dei deadlock. Questo deve essere definito e applicato nella logica dell’applicazione.
- L’evitamento completo non è sempre possibile, soprattutto quando le considerazioni sulle prestazioni richiedono sequenze di blocco diverse.
Rilevanza per l’App mobile Anvaigo
- I deadlock SQL non sono critici nell’App mobile di Anvaigo, poiché i meccanismi automatici di retry garantiscono la rielaborazione delle transazioni non riuscite.
- La vittima del deadlock non ha alcun impatto negativo sull’elaborazione dei dati o sull’esperienza dell’utente, poiché quest’ultimo non vedrà alcun tentativo.
- In questo contesto non è sempre possibile evitare un deadlock, poiché è solo l’ordine di blocco delle risorse a determinare se si verifica una situazione di deadlock.
- Tuttavia, questo non è un problema perché il sistema riprova automaticamente l’elaborazione dei dati in arrivo, assicurandosi che venga completata con successo.
