Nous avons écrit une application simple "client" pour un client qui se connecte à leur base de données SQLServer fonctionne environ 360 requêtes contre une "propriété" et renvoie ces données en tant qu'objet .NET que nous appelons un "CProp".
Les requêtes varient en complexité, mais les plus longs prennent peut-être 400 ms. Lorsque nous l'avons récemment couru pour 60 propriétés, toute la course a pris environ 3 minutes. Le client a décidé de déplacer sa base de données sur un serveur distant avec 65 ms entre nous. En conséquence, la même requête nécessite 51 minutes.
Maintenant, j'ai 99% sûr que le problème est la récupération de la ligne, mais je dois prouver que cela. Le DBA a dirigé une trace sur le processus, mais ne l'a jamais utilisée auparavant, j'ai été consterné pour savoir comment peu d'informations contenues. Ce que j'ai vu est qu'il fallait un peu moins de 4 minutes de temps du serveur. Cela renforce ma conviction que le problème est dans la récupération de la rangée.
Mais comment puis-je mesurer cela? La trace ne renvoie rien sur le nombre de lignes ou de taille totale de données - je le fais mal? Je sais aussi que le lotting se produit à l'extérieur du serveur, alors comment pouvons-nous même savoir ce qui se passe là-bas? De manière générale, comment les problèmes de débogage sont-ils de la place "en dehors du serveur" afin de parler.
Une autre approche de tester combien de temps une requête prend pour récupérer du serveur SQL est d'utiliser test-dbanetworklatenance .
par exemple.
Test-DBanetWorkLatency -SQlinStance SQLSERVER2014A, SQLCLUSTER, SQLSERVER -QUERY "Sélectionnez Top 10 * à partir d'autresDB.DBO.Table" -Count 10
Tests L'exécution des résultats Retour de "Sélectionnez le top 10 * à partir de l'autre db.dbo.table" 10 fois sur SQLSERVER2014A, SQLCLUSTER et SQLServer à l'aide des informations d'identification Windows. Vous pouvez utiliser -sqlCredential
Pour passer des crédits SQL à la commande ci-dessus.
Sortie typique (le nom de serveur moins serait comme ci-dessous):
>
ExecutionCount : 10
Total : 340.77 ms
Average : 34.08 ms
ExecuteOnlyTotal : 246.72 ms
ExecuteOnlyAverage : 24.67 ms
NetworkOnlyTotal : 94.05 ms