Flux d'exécution de requête SQL Server

Je cherche des informations sur la façon dont SQL Server traite réellement l'exécution des requêtes dans des détails plus fins (comme datatables conservées dans le tampon / memory et comment décide-t-il d'get de nouveldatatables même s'il y a un changement de mise à jour dans une seule colonne dans une requête, etc.)

Si quelqu'un connaît des sources s'il vous plaît faites le moi savoir?


Nous avons une application web utilisant sql server 2000, elle a de fréquentes lectures fréquentes de près de 70% des tables (tableau de bord) toutes les 30 secondes. et en même time beaucoup d'écritures se produisent.

S'il vous plaît laissez-moi savoir des conseils pour l'optimization du scénario ci-dessus?

Personne ne sera en mesure de vous donner une réponse sur la façon de résoudre votre problème d'optimization. Cela nécessite l'access à votre server de database. Pour résoudre vos problèmes, vous devez comprendre à peu près comment la database fonctionne, et pour cela, vous devez faire quelques lectures.

Les ressources en ligne sont OK, mais les trois livres suivants sont inestimables. Les deux premiers livres contiennent des informations très détaillées sur le fonctionnement de SQL Server. Les derniers sont un guide sur la façon d'écrire des requêtes, mais avec une discussion sur la manière dont le moteur visualise également les requêtes.

  1. Kalen Daleney: Sql Server 2008 Internals
  2. Sql Server 2005: Dépannage pratique :
  3. Ben Gan et autres : Inside SQL Server 2008: interrogation T-SQL

Il faudrait beaucoup de messages pour répondre aux questions de type interne, je vous suggère de commencer à lire certains des livres blancs / blogs et quelques livres.

Pour 2000, l'architecture SQL Server de Ken Henderson vous donnera des détails internes profonds, pour les éditions plus récentes de SQL, il a fait un exercice de dépannage pratique en 2005 qui n'est pas mauvais, et le livre SQL 2008 Internals de Kalen Delaney est très bon.

Vous devriez examiner le plan d'exécution.

Appuyez sur Ctrl-L dans le SSMS ou sur SET SHOWPLAN_TEXT ON avant d'exécuter la requête.

Cela vous donnera des informations détaillées sur les index utilisés, les algorithms de jointure, etc.

Vous pouvez également voir les statistics:

 SET STATISTICS TIME ON SET STATISTICS IO ON 

, qui vous donnera l'information sur combien de lectures ont été faites à partir de tables réelles, de cache, etc., et combien de time (time réel et CPU ) a pris chaque requête.

À propos de la gestion du tampon SQL Server 2008: http://msdn.microsoft.com/fr-ca/library/aa337525.aspx

Ensuite, vous pouvez naviguer avec la barre latérale gauche pour get des informations sur d'autres sujets.

En ce qui concerne les sources externes, MSDN dispose d'une ressource complète sur l'optimization de votre installation de SQL Server 2000, notamment l'article sur les performances et l'évolutivité de Patterns & Practices .

Si vous savez où commencer à chercher, adoptez une approche ascendante en examinant les profils SQL et les plans de requête, comme cela a été mentionné. Sinon, commencez par le haut et découvrez les coûts associés à la recompilation des requêtes, comment indexer efficacement et comment l'optimiseur de requêtes utilise les statistics.