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

MS SQL Server Discussion :

Comment donner des ordres de priorité à mes requêtes ?


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 306
    Par défaut Comment donner des ordres de priorité à mes requêtes ?
    Bonjour à tous,

    J'utilise Microsoft SQL Server 2014 Standard Edition (64-bit) sur un serveur.
    J'ai des applications et un intranet qui communiquent avec ce SQL Server.
    Sur une de mes application j'ai un traitement qui est très lourd et dure quelques minutes, hélas pendant ce temps l'intranet est très lent et les timeouts fréquents

    J'aimerais donc donner une importance/priorité plus faible à l'application pour qu'elle laisse plus de ressource à l'intranet.
    J'ai vu qu'il existait un "Gouverneur de ressources" mais hélas indisponible sur la version Standard.

    Existe-il une solution à mon problème ?

    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Bonjour,

    Votre probleme est vague il nous manque des éléments mais j'ai déjà néamoins quelques pistes qui vous feront répondre :

    • Le traitement long a t'il été optimisé ? Est il possible de diminuer les ressources accaparé par ce traitement (Nombre d'io / CPU ... )
    • Est il possible de sortir ce traitement sur un autre environnement ?
    • Avez vous identifiés la ou les requetes consommatrices ? Et a quel niveau ?
    • Est il impératif de faire tourner ce traitement en journée ?

  3. #3
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 306
    Par défaut
    Merci pour ta réponse.

    Le traitement long a t'il été optimisé ? Est il possible de diminuer les ressources accaparé par ce traitement (Nombre d'io / CPU ... )
    Oui je savais que ce traitement allait être lourd, j'ai donc beaucoup travaillé l'optimisation.
    Qu'entends tu pars nombre d'IO ?

    Est il possible de sortir ce traitement sur un autre environnement ?
    Pas impossible mais difficile, car les données devrons être rapidement à jour d'un environnement à l'autre.

    Avez vous identifiés la ou les requêtes consommatrices ? Et a quel niveau ?
    Oui mais elles sont optimisées et indispensables.

    Est il impératif de faire tourner ce traitement en journée ?
    Hélas oui, c'est un calcul de prix d'articles.

  4. #4
    Membre chevronné
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Dans l'optimisation je vois que vous effectuez un calcul de prix n'avez vous pas essayé de le faire en .Net via du CLR pour soulager le serveur SQL (piste possible, ce n'est pas forcément la solution ultime) ?

    Quel est le nombre d'IO remonté par votre requete consommatrice au niveau accès disque ? Avez vous le plan de la requete incriminé ?

    Normalement il est imperatif de sortir les traitements de scoring / BI ... du transactionnel, l'ideal serait de transferer les données sur une autre instance via un systeme de réplication par exemple et d'effectuer les calcul dans un environnement dédié.

    Autre point : Le parrallélisme est il activé sur votre machine ? Si oui votre requete consommatrice est elle élligible ? Comment se comporte le parrallélisme vis a vis de cette requete ? comment est solicité votre CPU au moment du passage de cette requete ?

    Julien

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Il faudrait savoir avant toutes choses si c'est bien un problème de charge sur le serveur. Dans votre cas, il me semble plus probable qu'il s'agisse de problème de verrouillage qui bloque les autres requête, lesquelles tombent alors en timeout.

    La solution au problème ne sera alors pas du tout la même.

    Il faudrait nous en dire plus sur le traitement, ce qu'il fait,...

  6. #6
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 306
    Par défaut
    Oui il s'agit plus d'un verrouillage j'ai l'impression.

    Le traitement parcours environ 10'000 articles et par article au moins 3 SELECT (dont 1 avec UNION) et un UPDATE sur environ 1 article sur 20.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par aloisio11 Voir le message
    Bonjour à tous,

    J'utilise Microsoft SQL Server 2014 Standard Edition (64-bit) sur un serveur.
    J'ai des applications et un intranet qui communiquent avec ce SQL Server.
    Sur une de mes application j'ai un traitement qui est très lourd et dure quelques minutes, hélas pendant ce temps l'intranet est très lent et les timeouts fréquents

    J'aimerais donc donner une importance/priorité plus faible à l'application pour qu'elle laisse plus de ressource à l'intranet.
    J'ai vu qu'il existait un "Gouverneur de ressources" mais hélas indisponible sur la version Standard.

    Existe-il une solution à mon problème ?

    Merci d'avance
    Globalement vous pouvez faire cela par le "resource governor" : https://msdn.microsoft.com/en-us/library/bb933866.aspx

    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/ * * * * *

  8. #8
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 306
    Par défaut
    Pas disponible dans la version Standard hélas

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    ok, je pensais que vous faisiez cela dans une procédure stockée...
    Je n'ai pas lu votre code en détail mais :

    1/ il s'agit finalement surement bien de problème de performances. a priori, vous éxécutez pas moins de 20000 requetes...
    2/ vous devriez réécrire en procédure stockée. je pense qu'une seule requete UPDATE devrait suffire, et ne durera probablement que quelques secondes.
    3/ vous pourriez même envisager une vue indexée, si c'est possible et pertinent... (a quelle fréquence est exécutée cette procédure, et que fait-elle ?)

  10. #10
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 306
    Par défaut
    Oui je peux regrouper les updates mais ils ne sont pas exécuté pour chaque article. Uniquement sur 5%/10%.

    Cette routine passe toutes les 2 heures et dure entre 8 et 9 minutes.
    Elle calcule les prix des articles.

  11. #11
    Membre chevronné
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Effectivement encapsuler les mise a jour dans une procédure stockée sera beaucoup plus performant ...

    Il faut :

    • Identifier les données a mettre a jour surtout c'est juste 5 a 10 % ça ira très vite
    • Mettre en place le syteme de mise a jour
    • Au besoin utiliser des fonctions CLR pour le calcul



    Si vous avez un DBA's SQL Server sous le coude essayez de vous rapprocher de lui pour qu'il vous auguille sur la bonne démarche.

  12. #12
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par aloisio11 Voir le message
    Cette routine passe toutes les 2 heures et dure entre 8 et 9 minutes.
    Elle calcule les prix des articles
    vos prix changent toutes les deux heures ?

Discussions similaires

  1. comment ajouter des infos projet sur mes JSP
    Par legad dans le forum Maven
    Réponses: 1
    Dernier message: 12/02/2008, 15h45
  2. comment donner des arguments au main()
    Par adel.87 dans le forum Débuter
    Réponses: 3
    Dernier message: 23/12/2007, 21h22
  3. Comment donner des droits sur tous les objets d'un schéma
    Par farenheiit dans le forum Administration
    Réponses: 2
    Dernier message: 07/06/2007, 16h27
  4. comment donner des couleurs au ligne d'un DBgrid
    Par tchimou dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/05/2007, 01h50
  5. Réponses: 8
    Dernier message: 13/09/2006, 17h21

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