none
Optimisation procédure stockée paramétrée sous SQL Server (optimisation reporting Services) RRS feed

  • Question

  • Bonjour,

    Comme je peut optimiser un procédure stockée avec paramètre( avec ou non sql dynamique) qui extraite des données  pour le renvoie aux DataSet. s'il y a des regle à appliquer ou des modification à apporter sur les procédure toutes suggestion please.

    Merci de vouloir aider

    Salutations

    jeudi 18 septembre 2014 20:57

Toutes les réponses

  • Bonjour,

    Fournissez au moins le code que vous avez, et les suggestions suivront.

    Cordialement.

    vendredi 19 septembre 2014 06:57
  • Sans code, l'hypothèse numéro 1 : si vous avez des paramètres, il est important de faire attention à la réutilisation de plan d'exécution.

    Pour éviter simplement ce problème, il suffit de recompiler la procédure 

    Plus de détail :

    si la syntaxe est strictement identique à une précédente exécution de la requête, un plan d’exécution est réutilisé si plan de la requête déjà en cache.

    Dans le cas d'utilisation de paramètre (comme dans votre procédure stockée), il y a le phénomène de parameter snifing, qui provoque la réutilisation du plan d'exécution de la procédure peu importe les valeurs des paramètres. Il y a donc 1 plan pour N combinaisons de valeur de paramètre.

    Pour la recompilation, il y a 3 granularités : 

    Au niveau d'un appel particulier :

    USE [AdventureWorks2012]
    GO
    EXEC usp_TestPlanExecution 10 WITH RECOMPILE
    EXEC usp_TestPlanExecution 20 WITH RECOMPILE

    Au niveau de la procédure, lors de chaque exécution, le plan est recalculé :

    Au niveau du bloc de code de la procédure qui pose problème :

    Attention, la recompilation nécessite le calcul d'un plan d'exécution ce qui consomme du CPU. Donc recompiler une procédure qu'est appelé X fois par seconde est généralement une mauvaise idée, il faut dans ce cas forcer un plan d'exécution (mais c'est un autre sujet).

    vendredi 19 septembre 2014 07:30