Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Zéro blocage SQL par conception - des modèles de codage ?

Écrire du code anti-blocage est vraiment difficile. Même lorsque vous accédez aux tables dans le même ordre, vous pouvez toujours obtenir des blocages [1]. J'ai écrit un article sur mon blog qui détaille certaines approches qui vous aideront à éviter et à résoudre les situations de blocage.

Si vous voulez vous assurer que deux instructions/transactions ne se bloqueront jamais, vous pourrez peut-être y parvenir en observant les verrous que chaque instruction consomme à l'aide de sp_lock procédure stockée système. Pour ce faire, vous devez soit être très rapide, soit utiliser une transaction ouverte avec un indice de blocage.

Remarques :

  1. Toute instruction SELECT nécessitant plusieurs verrous à la fois peut bloquer une transaction conçue intelligemment qui saisit les verrous dans l'ordre inverse.