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

Administration SQL Server Discussion :

Requête qui ne parallélise pas en Production [2008R2]


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Juillet 2009
    Messages : 43
    Par défaut Requête qui ne parallélise pas en Production
    Bonjour a tous,

    Je me trouve confronter a un problème assez perturbant.
    Lorsque je me suis lancé dans l’étude d’un problème de performance remonté ce matin par les utilisateurs sur une application j’ai constaté un phénomène assez surprenant : la requête directement impliqué dans cette chute de performance (conséquente) ne parallélise pas sur mon environnement de production alors qu’elle parallélise parfaitement dans l’environnement de pré-Production.
    Afin d’évacuer toute fausse piste je précise les éléments suivants :

    L’environnement de Pré-Production et l’environnement de Production sont d’un point de vu machine physique les mêmes pour ce qui est des disques et de la CPU, le serveur de production a été gonflé en RAM (24Go en Production, 16Go en Pré-Production).
    La base de données de l’environnement de pré-Production est une restauration de la base de production datant de moins d’un mois.
    La reconstruction des indexes et la mise à jours des statistiques sont effectuer sur cette base chaque soir dans les 2 environnements et se sont correctement effectué la nuit dernière.
    Enfin les plan d’exécution de la requête récupérés sur les 2 environnements sont les mêmes, au parallélisme prêt, avec des couts très similaires aux même étapes (comparaison effectué avec SQL Sentry Plan Explorer).
    Fort de ces éléments j’ai évidement immédiatement comparé les paramètres de parallélisassions des requêtes pour les instances, la seule différence entre les 2 était le MAXDOP, a 0 sur le serveur de Pré-Production et a 16 (le nombre de cœurs de CPU pour la machine) sur le serveur de Production. Histoire d’être totalement cohérent j’ai positionné le MAXDOP à 16 sur le serveur de Pré-Production.
    Le comportement est toujours le même.

    J’ai bien évidement chercher sur le net, dans les msdn et autres blog des informations concernant le choix ou non par le moteur d’utiliser la parallélisassions pour les requêtes et il me semble qu’aucun facteur empêchant son utilisation ne soit a l’œuvre sur mon serveur de production.

    Je suis donc perplexe et mes utilisateurs sont agacés (il semble que le problème ne survienne que depuis ce matin ce qui indiquerais que jusqu'à vendredi au moins le moteur parallélisait correctement la requête) par un temps de réponse fortement dégradé (2 secondes en Pré-Production pour rendre prêt de 23000 lignes, plus de 4 minutes en Production pour rendre prêt de 5000 lignes, interrompu avant la fin puisque requête trop lente et trop pénalisante pour les autres utilisateurs).

    Merci de toute l’aide que vous pourrez m’apporter dans ma recherche d’explication et de solution.

  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
    22 017
    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 : 22 017
    Billets dans le blog
    6
    Par défaut
    Quelle version/edition de SQL Server ?
    Quel OS ?
    Quelle config machine au niveau CPU core threading ?
    Quel config au niveau des IO affinity ?
    Utilisez vous le gouverneur de ressources ?

    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
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Juillet 2009
    Messages : 43
    Par défaut
    - Version de SQL Serveur : 10.50.1600 Standard x64 des 2 cotés
    - Version OS Windows 2003 R2 SP2 Standard x64 pour les 2 environnements
    - Ou puis je trouver cette information ?
    - I/O affinity par defaut en automatique
    - Pas de gouverneur de ressource.

    Merci et A+

  4. #4
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Est-ce que les paramètres de configuration de niveau serveur "max degree of parallelism" et "cost threshold for parallelism" ont une valeur particulière sur l'environnement de production par rapport à celui de préprod ?

    ++

  5. #5
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    J'ajouterais que passer de 2 secondes à 4 minutes ne s'expliquent surement pas que par l'absence de parallelisation en production...

    Voyez votre plan d’exécution, bien d'autres choses peuvent expliquer cette accroissement de temps de réponse (soudaine augmentation du volume de données par exemple...)
    Avez vous par exemple tenté en pre-production de bloquer la parallelisation (MAX DOP 1) et comparer les temps?

  6. #6
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Juillet 2009
    Messages : 43
    Par défaut
    Comme je l'ai expliquer la configuration de niveau serveur "max degree of parallelism" et "cost threshold for parallelism" sont identiques dans les 2 environnement et les plan d'execution sont les memes a la seule difference du paralellisme.

    Il n'y a pas non plus d'accroissement de volume démesuré entre les 2 environnement (l'estimated Row en Pré-Prodution est de 50000 ligne, en production de 75000 lignes avec des statistiques a jours dans les 2 environnements).

    Je vais effectuer le test en Pré-Production avec le Maxdop a 1 et revenir vers vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête qui ne sélectionne pas tout
    Par Miss Ti dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 25/07/2006, 16h18
  2. Réponses: 8
    Dernier message: 26/01/2006, 15h47
  3. [php-mysql] requête qui ne marche pas....
    Par sanosuke85 dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/01/2006, 18h18
  4. Une requête qui ne reconnait pas is not null
    Par LeBauw dans le forum Access
    Réponses: 2
    Dernier message: 08/09/2005, 13h29
  5. Requête qui ne passe pas
    Par TheBart dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/08/2005, 11h12

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