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

Zero stallo SQL in base alla progettazione:qualche modello di codifica?

Scrivere codice a prova di deadlock è davvero difficile. Anche quando accedi alle tabelle nello stesso ordine potresti comunque ottenere deadlock [1]. Ho scritto un post sul mio blog che elabora alcuni approcci che ti aiuteranno a evitare e risolvere situazioni di stallo.

Se vuoi assicurarti che due istruzioni/transazioni non si bloccheranno mai, potresti essere in grado di ottenerlo osservando quali blocchi consuma ogni istruzione usando sp_lock procedura memorizzata di sistema. Per fare ciò devi essere molto veloce o utilizzare una transazione aperta con un suggerimento di blocco.

Note:

  1. Qualsiasi istruzione SELECT che richieda più di un blocco contemporaneamente può bloccare una transazione progettata in modo intelligente che acquisisce i blocchi in ordine inverso.