Des ressources pour comprendre le verrouillage et la simultanéité de SQL Server?

8

Comme le montre une récente question de verrouillage des mines et de simultanéité sont DIFFICILES.

Pouvez-vous suggérer de bonnes ressources pour les professionnels SQL intermédiaires à avancés pour faire une étude approfondie sur ces derniers qui, correctement apprise, permettrait une meilleure navigation de tous les pièges inhérents dans ce domaine?

Je pense à toutes sortes de ressources - tutoriels, blogs, pages de manuel, sessions PASS, ou quoi que ce soit.

ErikE
la source

Réponses:

7

Le meilleur livre sur le sujet, et la ressource la plus complète, est SQL Server 2008 Internals de Kalen Delaney. Vous ne pouvez vraiment pas faire mieux. Un autre bon livre sur le sujet est le module SQL Server 2008 Internals and Troubleshooting de Chris Bolton. Je ne pense pas qu'il soit aussi complet que le livre de Kalen, mais il couvre assez bien les choses, en particulier en ce qui concerne le verrouillage et la concurrence.

Grant Fritchey
la source
Je dois appuyer la suggestion de Grant - SQL Server 2008 Internals par Kalen Delaney est une ressource IMPRESSIONNANTE! Il se trouve en permanence sur mon bureau.
OliverAsmus
7

Bien que les livres spécifiques aux produits expliquent très bien comment utiliser les produits (et la série de Kalen Delaney est géniale!), Ils n'ont pas vraiment de chance contre le `` livre noir '' et le `` livre rouge '' des systèmes de base de données. Surtout le livre noir (le premier lien) est à peu près une lecture obligatoire si vous voulez comprendre ces concepts. Le livre rouge est une collection de documents de recherche, dont beaucoup sont disponibles en ligne. Je garde une page avec des liens vers certains d'entre eux . Le troisième livre lié est essentiellement une réécriture plus à jour du «livre noir» (également moins cher et disponible sur Kindle ...)

Il y a aussi plusieurs bons blogs, je recommanderais avant tout le blog CSS SQL Server .

Remus Rusanu
la source
5

Le verrouillage et la simultanéité est un sujet que j'ai appris le plus grâce aux tests et à l'observation.

Commencez par lire les niveaux d'isolement dans le moteur de base de données et les effets de concurrence , afin que vous compreniez la relation entre les deux. Vous pouvez maintenant expérimenter:

  • Construisez le SQL pour une transaction de test. Quelque chose de simple et autonome avec un contexte / domaine que vous comprenez, par exemple le paiement d'un panier d'achat ou un virement bancaire. Assurez-vous de disposer d'une méthode pour vérifier que les données sont dans l'état attendu après le test.
  • Exécutez votre scénario en observant le type, la durée et la séquence des verrous appliqués par le moteur de base de données.
  • Modifiez le niveau d'isolement ou appliquez des conseils et observez la modification des verrous pris.
  • Lorsque vous pensez avoir une transaction qui survivra à la concurrence , testez-la.

J'ai tendance à vérifier les séquences de verrouillage avec l' indicateur de trace 1200 ou une trace Profiler . Je crois que des événements prolongés pourraient également être utilisés, mais je ne me suis pas encore essayé.

Mark Storey-Smith
la source