Maison > base de données > tutoriel mysql > Pourquoi ma procédure stockée s'exécute-t-elle plus rapidement dans SSMS que dans SqlCommand ?

Pourquoi ma procédure stockée s'exécute-t-elle plus rapidement dans SSMS que dans SqlCommand ?

DDD
Libérer: 2024-12-18 16:45:11
original
537 Les gens l'ont consulté

Why Does My Stored Procedure Run Faster in SSMS Than in SqlCommand?

Disparités de performances avec les procédures stockées : SqlCommand vs SSMS

Le temps d'exécution d'une procédure stockée peut varier considérablement entre SQL Server Management Studio ( SSMS) et System.Data.SqlClient.SqlCommand, même en l'absence de détection de paramètres. La cause première peut résider dans les différentes options SET activées par chaque environnement d'exécution.

En utilisant SQL Server Profiler, il a été découvert que SSMS exécute plusieurs commandes SET que le fournisseur de données client SQL .NET omet. Ces options SET peuvent influencer le plan de requête et les performances. Une option SET cruciale qui est apparue comme coupable dans ce cas est :

SET ARITHABORT ON
Copier après la connexion

Lorsque cette option SET est activée, les requêtes avec des opérations arithmétiques qui pourraient potentiellement entraîner un débordement, une division par zéro ou d'autres conditions exceptionnelles s'arrêtera prématurément. Ce comportement diffère du paramètre par défaut de SET ARITHABORT OFF, qui permet à l'exception de se produire.

Par conséquent, le plan d'exécution et les performances d'une procédure stockée peuvent être affectés par l'option SET ARITHABORT. Si une opération arithmétique au sein de la procédure stockée est soumise à ce paramètre, cela peut entraîner des disparités dans le temps d'exécution entre SSMS et SqlCommand.

Pour atténuer ce problème, il est conseillé d'examiner attentivement les options SET utilisées par les applications. qui se connectent à SQL Server. En utilisant les mêmes options SET dans SqlCommand que celles utilisées par SSMS, les incohérences de performances peuvent être évitées. De plus, tirer parti du profileur SQL Server pour identifier les options SET actives constitue une technique de débogage précieuse.

D'autres facteurs, tels que les paramètres de chaîne de connexion, le comportement des transactions et les paramètres MARS (Multiple Active Result Sets), peuvent également avoir un impact sur les performances. et doivent être considérés comme des facteurs contributifs potentiels.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal