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

Bloquer, bloquer, bloquer sur la porte des DBA avec le blocage de SQL Server

Bien que nous sachions tous que le verrouillage est essentiel à l'intégrité des données, cela ne change rien au fait qu'il peut être une sérieuse épine dans le pied !

Lorsque nous voyons un blocage dans notre base de données, nous supposons souvent que quelque chose ne va pas - ce n'est pas toujours le cas. D'après mon expérience, la majorité des blocages de SQL Server sont légitimes, mais ils doivent être étudiés et compris. Les impasses, en revanche, sont rarement légitimes ! Les blocages sont considérés comme critiques dans le monde SQL Server car les processus sont automatiquement tués, car SQL Server résout les blocages sans nécessiter d'intervention manuelle. Encore une fois, même s'ils sont "résolus", ils doivent absolument être étudiés et compris.

Il existe quelques stratégies de conception qui peuvent aider à réduire les occurrences de blocages et de blocages SQL Server dans votre base de données :

  • Utiliser des index clusterisés sur des tables très utilisées
  • Évitez les instructions SQL à grand nombre de lignes
  • Décomposez les transactions longues en plusieurs transactions plus courtes
  • Assurez-vous que les instructions UPDATE et DELETE utilisent des index
  • Ne planifiez pas le chevauchement des tâches de mise à jour par lots
  • Maintenez vos statistiques à jour

Et je suis sûr qu'il y en a beaucoup plus, mais la réalité est que vous pouvez suivre toutes les meilleures pratiques auxquelles vous pouvez penser et avoir toujours des blocages et des blocages. En effet, dans la plupart des cas, les blocages sont causés par un code d'application mal conçu. (Le terrier du lapin dans la conception d'applications :codage, isolation des transactions et modèles d'accès. Mais pour l'instant, concentrons-nous sur l'étude et la compréhension des blocages et des blocages).

Blocages et interblocages SQL Server

Le premier défi avec les blocages et les blocages est d'identifier quand et où ils se produisent car ils ne sont généralement pas signalés, signalés après coup ou résolus automatiquement. Pour bien comprendre ce qui se passe dans votre base de données concernant les blocages et les interblocages, vous devez voir leurs occurrences au fil du temps. De plus, afin de rectifier le problème et d'arrêter les occurrences futures, vous devez vous attaquer à la cause première du blocage - vous armer des informations dont vous avez besoin pour relayer les développeurs d'applications et ainsi mettre fin au jeu de blâme entre Devs et DBA.

C'est pourquoi j'aime vraiment l'analyseur de charge de travail dans le nuage Spotlight. Je peux sélectionner une plage horaire (une heure, un jour ou une plage personnalisée) et afficher le verrouillage -activité liée à cette gamme. Tout de suite, je comprends mieux ce qui se passe ! Je peux voir les modèles de verrouillage, comparer le taux de verrouillage au fil du temps par rapport à une période précédente, voir le taux de blocage sur une période spécifique et afficher les KPI de verrouillage tels que Verrouillage exclusif, Partagé et Mise à jour.

Alors maintenant, je veux aller à la cause première - c'est là que Arbre des dimensions Je peux explorer et filtrer les informations pour une période spécifique, ce qui me permet de voir les mêmes informations à des dimensions plus profondes telles que les bases de données , Utilisateurs , Programmes , et Instructions SQL , tout en filtrant le "bruit blanc" au fur et à mesure, identifiant clairement la ou les sources de mon problème.

Ici, je regarde quelles bases de données connaissent le plus de blocages au cours de la plage horaire :

Maintenant, je vais explorer les Utilisateurs dans la base de données sélectionnée :

Ensuite, je choisirai de voir la liste des instructions SQL provoquant un verrouillage qui a été exécuté par l'Utilisateur sélectionné dans la base de données sélectionnée pour la plage de temps spécifiée .

Maintenant, je peux voir tous les verrouillages informations connexes pour l'instruction SQL sélectionnée .

Donc, si vous voulez aller au fond de vos problèmes de verrouillage, de blocage et d'interblocage, je vous recommande de consulter Spotlight Cloud. Spotlight Cloud facilite plus que jamais l'étude et la compréhension des problèmes de verrouillage au sein de la base de données et garantit finalement que votre code d'application est sans blocage.