IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Problème avec l'option (recompile) : non efficace


Sujet :

Développement SQL Server

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2023
    Messages : 3
    Par défaut Problème avec l'option (recompile) : non efficace
    Bonjour à tous,

    voici mon probléme :

    J'ai une requete sql sur une base de Prod d'un client. Pour info, cette requête comporte des fonctions imbriquées.

    Cette requete, en "mode rapide" prend entre 4 à 10 secondes, et 7 minutes en "mode long" !

    Après différents tests, vérifications des parametres bdd (flag TSQL_SCALAR_UDF_INLINING est bien activé), comparaison des plans d'exécutions "rapide" vs "long", je me rends compte qu'en vidant le cache des plans d'exec via SSMS (commande "DBCC FREEPROCCACHE") => je suis en "mode rapide"...
    au fil des heures, la requête revient en "mode long", et je dois (re)faire à nouveau un DBCC pour vider le cache des plans d'exec et revenir à une situation "mode rapide".

    Afin d'avoir une solution "pérenne" et ne pas avoir besoin de vider les caches chaque jour à la main, j'ai testé en ajoutant "OPTION (RECOMPILE)" en fin de ma requête.
    => problème : ce OPTION (RECOMPILE) n'a pas l'effet espéré, je reste en "mode long" malgré son ajout !?

    Questions :
    - Savez vous pourquoi ? (j'imagine une histoire de plan d’exécution non recalculé dans les fonctions imbriquées...).
    - connaissez vous une commande / option + forte que "OPTION (RECOMPILE)" pour ne pas avoir besoin de faire un dbcc et que ma requete reste en "mode rapide" ?


    Informations complémentaire :
    - SQL Server 2019 / 8 processeurs
    - les aspects "infra" sont écartés : j'ai une base de Test sur la même instance, ma requête est toujours en "mode rapide" alors qu'en même temps sur la PROD on est en "mode lent" (on peut écarter les pistes DD, CPU, surcharge, RAM, ..)

    Merci d'avance pour vos idées, pistes, réponses .....
    Nicolas

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Utilisez le Query Store et fixez le plan adéquat. En 2022 ceci est automatique.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2023
    Messages : 3
    Par défaut
    Actuellement, le Query store n'est pas activé chez nous (il faudrait au passage que je creuse cette fonctionnalité).
    La requête en question est une requête avec passage de paramètres, je ne pense donc pas qu'il y ait un "plan adéquat" à fixer, cela variant en fonction du passage de param non ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Oui et non... Et pour le oui, il vaut mieux un plan pas parfaitement adéquat mais rapide, qu'un plan lent, parfois adéquat...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2023
    Messages : 3
    Par défaut
    Merci pour ces retours.
    Si on ne souhaite pas utiliser le magasin de requêtes, y aurait-il une autre solution ?

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Voir à utiliser un OPTIMIZE for.... Mais sans la requête et les différents plans, difficile de vous aiguiller plus en avant.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Problème avec l'option version de Delphi 2006
    Par richard038 dans le forum Delphi
    Réponses: 4
    Dernier message: 05/12/2006, 09h20
  2. Problème avec l'option -llibpng
    Par Premium dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 12/11/2006, 11h40
  3. Réponses: 1
    Dernier message: 28/06/2006, 13h31
  4. Problème avec Me.RecordSource : valeur non conforme
    Par Tchupacabra dans le forum Access
    Réponses: 6
    Dernier message: 02/12/2005, 17h01
  5. [socket] Problème avec les options
    Par gangsoleil dans le forum Développement
    Réponses: 3
    Dernier message: 13/07/2005, 13h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo