|
|
Publié sur 21/05/2018 13:55:48
|
|
|

Ces deux derniers jours, j’ai rencontré un problème assez frustrant : une procédure stockée d’environ 120 lignes est exécutée dans l’analyseur de requêtes de SQL Server 2012, La vitesse est très idéale, et environ 500 enregistrements de données peuvent être filtrés et capturés en moins d’une seconde. Cependant, lorsqu’on appelle le code du programme C#, le délai d’expiration de la connexion est sollicité. Réglez le CommandTimeout à 300, et il faudra environ 3 minutes pour s’afficher. J’ai vérifié le code plusieurs fois et je n’ai trouvé aucune erreur. Le problème demeure.
Analyse des causes : 1. Parce que la vitesse d’exécution dans l’analyseur de requêtes est rapide et que la quantité de données n’est pas importante. 2. Seul l’appel au programme est lent. 3. Définissez le paramètre CommandTimeout, et le résultat peut être affiché, mais cela prendra beaucoup de temps.
En résumé, il est préliminairement conclu que le problème réside dans le code C#. Mais il n’y avait aucun gain après l’inspection.
Consultez ces informations sur Baidu. J’ai finalement trouvé un post d’information similaire sur le forum CSDN. L’un des internautes a répondu : « Il est possible que le plan de mise en œuvre soit expiré ». Ça m’a vraiment réveillé dans mon rêve.
Exécutez immédiatement sur l’analyseur de requêtes :
En testant à nouveau le programme, cette fois il a enfin fonctionné. La vitesse est très satisfaisante.
Analyse des causes : Puisque les procédures stockées sont précompilées, un plan d’exécution est généré lors de la première exécution, et ce plan d’exécution est utilisé lors des exécutions ultérieures (sauf si la procédure stockée est spécifiée pour être recompilée), plutôt que de générer un plan d’exécution à chaque exécution. Lorsque la structure de l’objet impliquée dans la procédure stockée est ajustée, ou que les données associées changent significativement, ce qui peut rendre le plan original inadapté au statu quo actuel (expiration du plan d’exécution), la procédure stockée doit être recompilée.
Enfin, joignez le code de la procédure stockée :
|
Précédent:Partagez une seule source de code de page promotionnelle APP, adaptable, très belle et généreuse !Prochain:Cadre Open Source C# (Réimpression)
|