2010-01-14 7 views
3

Je développe en utilisant VSTS 2008 + C# + .Net 3.5 + ASP.Net + SQL Server 2008 Express. Je travaille sur une plate-forme 32 bits avec Windows Server 2003. Le problème que je trouve est une instruction SQL simple comme sélectionner/créer une table simple est très petite à partir de SQL Server Management Studio. BTW: Je pense que cela devrait être un problème spécifique à la machine puisque le même code fonctionne correctement sur une autre machine. Mais je ne suis pas sûr à 100%. Peut être cette machine déclenche un bug dans mon code?analyser les problèmes de performances SQL Server?

Des idées comment analyser pour trouver le goulot d'étranglement faible performance?

Répondre

3

Un bon début est d'utiliser SQL Server Profiler pour identifier les requêtes de longue durée.

Une fois que vous avez une idée sur ceux qui sont problématiques, vous pouvez utiliser SQL Server Management Studio pour examiner leurs plans requête pour voir si vous devez ajouter des index, etc.

+0

Pouvons-nous utiliser SQL Server Profiler pour SQL Server (gratuit) édition Express? Je doute. :-) – George2

+0

Et comment détecter si c'est SQL Server (ou mon problème de code) ou un problème d'environnement machine qui affecte les performances SQL? – George2

+1

SQL Server Profiler est un outil fourni avec SQL Server. Il n'est pas disponible pour Express, mais si vous disposez d'un serveur SQL complet sur une autre machine, vous pouvez profiler une base de données Express distante. –

1

En plus de la réponse précédente vous pouvez, si votre compte en a l'autorisation, surveiller les verrous sur les objets de base de données pendant que votre requête fonctionne mal. En outre, vous pouvez exécuter l'assistant d'optimisation d'index pour voir ce qu'il dit.

+0

Et comment détecter si c'est SQL Server (ou mon problème de code) ou un problème d'environnement de machine qui affecte les performances SQL? – George2

+1

s'il n'y a pas de verrous, le profil SQL semble bon et il semble y avoir tous les bons index que vous devez commencer à regarder le code/environnement. La requête fonctionne-t-elle correctement depuis le gestionnaire d'entreprise sur la même machine? –

+0

"verrouille le moniteur sur les objets de la base de données alors que votre requête est en cours d'exécution" et "vous pouvez exécuter l'assistant de réglage de l'index" - pouvez-vous me montrer comment? – George2

1

Si vous pensez qu'il est une machine question spécifique, un bon départ est de surveiller l'utilisation de la RAM par Sql Server, l'exécution de ce sentence:

DBCC MEMORYSTATUS; 
+0

Ensuite, comment analyser en fonction de cette sortie de commande? – George2

+0

Peut-on utiliser cette commande depuis SQL Server (gratuit) Express Edition? – George2

1

Si cela fonctionne bien sur certaines machines, mais pas d'autres, assurez-vous que la machine sur laquelle elle tourne plus lentement a la même indexation que la machine la plus rapide (il est surprenant de voir à quelle fréquence les index ne sont pas déplacés sur l'autre machine) et mettez à jour les statistiques.

Il peut également être beaucoup plus lent si le matériel est moins robuste sur la machine plus lente.

Les plans de profilage et d'exécution peuvent également aider à identifier les goulots d'étranglement et les problèmes de performance.

Vérifiez également les interblocages, souvent le code qui fonctionne correctement par lui-même peut entrer en conflit avec quelque chose d'autre que le serveur de production exécute en même temps.

De nombreux développeurs créent aussi du code sur une machine qui a beaucoup moins de charge et beaucoup moins de données que l'éventuelle machine de production, et qui sont surpris quand le code est lent à produire. Si vous n'aviez pas de jeu de données complet sur la machine de développement, vous courez de sérieux risques d'écrire du code peu performant. Si vous ne faites pas de test de charge, vous devriez peut-être le faire.

Et pourquoi développer en utilisant Express si la finale ne sera pas dans Express, acheter la version développeur et avoir tous les outils dont vous avez besoin pour régler et surveiller tout en développement.

Les autres applications qui s'exécutent sur la machine sont-elles lentes? Il est généralement une mauvaise pratique d'exécuter tout sauf SQL Server sur une machine car SQl Server voudra toute la mémoire de la machine.

+0

"Les plans de profilage et d'exécution peuvent également aider à identifier les goulots d'étranglement et les problèmes de performances." - Je veux en savoir plus sur ce sujet, sur les documents référencés? – George2

Questions connexes