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 :

Pb performances SQL 2008 x64


Sujet :

Administration SQL Server

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Par défaut Pb performances SQL 2008 x64
    Bonjour
    Je rencontre des problèmes de performance sous SQL2008 R2.

    J'ai une requête (générée par Analysis services) qui renvoie un nombre relativement important de lignes (> 3M)

    Lorsque cette requête est exécutée sur un serveur 32bit (2K, 2K5 ou 2K8) elle prend environ 5min.

    Lorsque je l'exécute sur un serveur 2K8 64bits, même base donc même nombre de lignes en sortie, elle prend 2h15 et occupe la totalité des processeurs.

    Après de nombreuses recherches et quelques pistes (utilisation d'indexs non clustered, gestion de la mémoire...) je ne parviens toujours pas à isoler le problème.

    Quelqu'un aurait-il une idée?

    Merci par avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    Essayer de forcer la sérialisation du plan

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT 
    ...
    OPTION (MAXDOP 1)

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Par défaut
    Citation Envoyé par dbaffaleuf Voir le message
    Essayer de forcer la sérialisation du plan

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT 
    ...
    OPTION (MAXDOP 1)
    Merci de votre réponse.
    Ce n'est pas mieux.
    La charge processeur est moins importante en limitant le parallélisme mais les temps de réponse sont identiques.
    En fait lorsque j'exécute la requete sur le serveur x64, elle commence à renvoyer des lignes très rapidement (après 10sec de traitement) mais les renvoie par petits lots de 60 lignes.
    Alors que sur le serveur 32bits la requetes s'exécute pendant environ 2min avant de renvoyer le résultat mais affiche ensuite la totalité des lignes en moins de 3min

  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
    Quelle configuration sur votre serveur 32 bits ? (CPU, RAM, version OS etc ..)
    Même chose sur votre serveur 64 bits ?

    Quel est le plan d'exécution généré dans les 2 cas ?
    Quelles sont les statistiques d'exécution générées dans les 2 cas ? (SET STATISTICS TIME ON .. SET STATISTICS IO ON)

    ++

  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
    D'ou exécutez vous vos 2 requêtes? sur SSMS en local sur chaque serveur?

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Il est aussi possible que les jointures se fassent sur des colonnes de type int (4 octets), ce qui n'est pas pour aider sur un processeur 64 bits.

    Si c'est le cas, il faudrait passer en bigint (8 octets), et voir l'effet ...
    Pas forcément simple à faire

    3 millions de lignes et SSAS ... construiriez-vous un cube ?

    @++

  7. #7
    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
    Citation Envoyé par elsuket Voir le message
    Il est aussi possible que les jointures se fassent sur des colonnes de type int (4 octets), ce qui n'est pas pour aider sur un processeur 64 bits.
    Ah bon ? Pourtant un processeur 64 bits acceptera des mots de 8 octets. Il pourra donc en théorie traiter 2 INT plus rapidement qu'un processeur 32 bits.

    Si c'est le cas, il faudrait passer en bigint (8 octets), et voir l'effet ...
    Cela voudrait donc dire qu'il faudrait plus de stockage pour les clés et donc ramener plus de pages pour traiter l'information ...

    ++

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    Pour pouvoir comparer, il faut voir les deux plans.

    Sur chaque environnement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set showplan_text on
    GO
    select ....
    GO
    Merci,

  9. #9
    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
    Envoyé par elsuket
    Il est aussi possible que les jointures se fassent sur des colonnes de type int (4 octets), ce qui n'est pas pour aider sur un processeur 64 bits.

    Ah bon ? Pourtant un processeur 64 bits acceptera des mots de 8 octets. Il pourra donc en théorie traiter 2 INT plus rapidement qu'un processeur 32 bits.


    Citation:
    Si c'est le cas, il faudrait passer en bigint (8 octets), et voir l'effet ...

    Cela voudrait donc dire qu'il faudrait plus de stockage pour les clés et donc ramener plus de pages pour traiter l'information ...

    ++
    __________________

    L'éternel débat, mettre la même taille de clé que la taille du processeur ou privilégier les pages gagnées avec la taille moindre?


    Personnelement je 'taille' mes clefs pour la volumétrie sans tenir compte de la taille du processeur.

    Il faudrait faire des tests approfondis.

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 021
    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 021
    Billets dans le blog
    6
    Par défaut
    Tu n 'as pas entièrement tort. C'était plus sensible en 2000 qu'en 2005. Dans mon cours à Orsys je montrais que même un SMALLINT dans un OS 32 bits perdait de 5 à 10% de temps pour vérifier les bits de poids haut, ce qui n'est plus le cas dans 2005.

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

  11. #11
    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
    Il y a aussi l'architecture des processeurs à prendre en compte. Les caches internes L2 et L3 peuvent être un point de contention sur certains processeurs 64 bits alors que sur des architectures 32 bits le problème ne sera pas forcément présent. Le fameux CPI (Cost Per Instruction).

    Il y a aussi les problèmes liés à l'alignement des données en mémoire et qui sont lues par les processeurs et qui sont plus sensibles pour des architectures 32 bits que 64 bits mais bon en principe les processeurs actuels règlent ce problème en ajoutant des bits supplémentaires pour forcer cet alignement.

    Il y a des cas où passer de 32 bits à 64 bits n'est pas forcément gage de performances (j'ai pû le constater d'ailleurs chez un client). Cela dépend à mon avis de la charge (requêtes) et des caractéristiques physiques du serveur.

    Lorsque cette requête est exécutée sur un serveur 32bit (2K, 2K5 ou 2K8) elle prend environ 5min.

    Lorsque je l'exécute sur un serveur 2K8 64bits, même base donc même nombre de lignes en sortie, elle prend 2h15 et occupe la totalité des processeurs.
    Encore une fois (et comme le disait aussi dbaffaleuf) il faudrait pouvoir comparer les 2 plans d'exécutions , voir ce qui prend le plus de temps et éventuellement comparer les config de serveur.

    ++

Discussions similaires

  1. Mauvaises Performances SQL Server 2008
    Par apprentie2011 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 13/04/2011, 11h01
  2. [SQL 2008] performance des pilotes
    Par lp38 dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 27/11/2008, 16h53
  3. Analyse performance SQL 4 sous NT4
    Par cedrickb dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/07/2006, 21h57
  4. Performance SQL LOADER
    Par devdev2003 dans le forum SQL*Loader
    Réponses: 3
    Dernier message: 02/05/2006, 13h01
  5. Performance SQL Server - lot DTS
    Par arno_web dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/01/2006, 15h30

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