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 :

Question perfomance retour d'experience 3 questions


Sujet :

Administration SQL Server

  1. #1
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut Question perfomance retour d'experience 3 questions
    Bonjour Tout le monde

    je voulais savoir si quelqu'un avait eu un retour d'experience concernant :

    - Le rajout de plusieurs fichiers sur une BDD au niveau des filegroup et avoir leur retour de performance dessus (surtout au niveau IO )
    - l'option PARAMETERIZATION FORCED a ON quels ont été les impacts positives ou négatives sur le sujet?
    - l'option max degree of paralelism, Quelle est valeur pour vous correspond le mieux en fonction de vos BDD? et pourquoi ?

    Je trouve sur ces sujets a boire et a manger sur ces sujets, mais bon pleins d'avis differents...

    merci a tous et bonne soirée

  2. #2
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par olivtone Voir le message
    Bonjour Tout le monde

    je voulais savoir si quelqu'un avait eu un retour d'experience concernant :

    - Le rajout de plusieurs fichiers sur une BDD au niveau des filegroup et avoir leur retour de performance dessus (surtout au niveau IO )
    - l'option PARAMETERIZATION FORCED a ON quels ont été les impacts positives ou négatives sur le sujet?
    - l'option max degree of paralelism, Quelle est valeur pour vous correspond le mieux en fonction de vos BDD? et pourquoi ?

    Je trouve sur ces sujets a boire et a manger sur ces sujets, mais bon pleins d'avis differents...

    merci a tous et bonne soirée
    POUR La premiére point je pense que le partitionement de vos table et de mettre vos ancien data dans une group de fichier avec un mode READ ONLY ,et de mettre vos données activé sur des group de ficier filegroup surtout sur des secteurs disque s’épater va vous permettre d'améliorer vos performance

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Octobre 2013
    Messages : 74
    Points : 160
    Points
    160
    Par défaut
    Bonjour,
    Ces trois sujets ne sont pas simples à aborder !


    Multiplication des fichiers de données:
    Dans l'absolu, il est plus "propre" de créer un Filegroup dédié aux données, ceci pour mieux cloisonner les données utilisateur des données système sur une base. Concrètement, certaines bases respectent ce cloisonnement, d'autres non.

    En terme de performance, multiplier les fichiers de données (dans un même filegroup ou dans des filegroups différents) n'a de sens que lorsque ces fichiers sont placés sur des partitions NTFS différentes (il n'y a pas de gain de perfromance à attendre lorsque les différents fichiers d'une base sont placés sur la même partition). SQL Server utilise un worker thread pour chaque partition NTFS, les demandes de lecture sur des partitions différentes peuvent donc être traitées en parallèle. Bien entendu, si ces partitions sont sur un même disque physique (ou une même grappe RAID), il est possible que le disque soit saturé en terme de demande d'entrées/sorties et que le fait de paralléliser les demandes de lectures ne permette pas de gagner en performances.
    Donc, pour résumer, du point de vue des performances:
    • Plusieurs fichiers sur une même partition: pas de gain
    • Plusieurs fichiers sur des partitions différentes d'un même disque: gain potentiel mais risque de saturation du disque
    • Plusieurs fichiers sur des disques physiques différents: gain potentiel


    Utilisation de l'option PARAMETRIZATION à FORCED:
    Pas de recette miracle (d'où beaucoup d'avis différents exposés), mais il faut bien comprendre les tenants et aboutissants de cette fonctionnalité.
    Par défaut (parametrization à SIMPLE), le plan d'exécution que stocke SQL Server pour une requête n'est valable que pour les valeurs explicitement définies dans la clause where (par exemple: "WHERE COL1 <50"). Le plan sera donc peu réutilisé (un nouveau plan sera compilé pour "WHERE COL1 <51"), donc un plus grand nombre de requêtes sera impacté par les compilations de plans. Mais, a priori, chaque plan sera optimal.
    Lorsque parametrization vaut FORCED, le plan d'exécution calculé pour une requête est quasi systématiquement (les exceptions sont listées ici) réutilisable pour toutes les valeurs possibles dans la clause WHERE (donc le plan compilé pour "WHERE COL1<50 AND COL2 = 23" sera par réutilisé pour "WHERE COL1<10000 and COL2 = -1"). Beaucoup moins de requêtes passeront donc par la phase de compilation du plan, mais les plans utilisés ont de plus grand risques de ne pas être optimaux.

    Concrètement, l'utilisation de ce paramètre est dangereuse, principalement lorsque les requêtes traitent des données qui ne sont pas équitablement réparties. Ces problèmes de "parameter sniffing" ou "bind variable peeking" peuvent avoir des conséquences désastreuses sur la performance des traitements en base (et ce problème n'est pas dédié à SQL Server, voir par exemple cette anecdote de Tom Kyte sur Oracle). Mon retour d'expérience personnelle sur le sujet est donc: Ne surtout pas utiliser cette option systématiquement, elle ne pourra être envisagée que dans des cas très spécifiques.

    Degré de parallélisme:
    Ici non plus, pas de recette miracle.

    Par défaut, SQL Server va se permettre d'utiliser en parallèle, POUR UNE OPERATION, autant de worker threads que de CPUs logiques mis à disposition (max degree of parallelism à 0). On s'accorde aujourd'hui à dire que sur des machines récentes, sur lesquelles on trouve un grand nombre de CPUs logiques présentés à une instance SQL Server, il est raisonnable de limiter cette valeur (4, 6 ou 8, mais rarement plus). Ceci permet d'éviter un potentiel goulot d'étranglement sur les CPUs.
    On s'accorde aussi (quoi que...) sur le fait que désactiver complètement le parallélisme (max degree of parallelism à 1) est une mauvaise idée, et qu'il est intéressant de repousser la limite pour laquelle SQL Server envisagera le parallélisme pour un plan d'exécution (cost threshold for parallelism, largement revu à la hausse, par exemple à 30 ou 50).
    Mais ces recommandations restent des bonnes pratiques et la configuration du parallélisme dépend complètement des traitements exécutés sur l'instance, du nombre de CPUs à disposition, et de la consommation observée sur ces CPUs.

    Si le profile d'activité de votre instance montre clairement une saturation des CPUs alors que les disques sont peu sollicités (on parle d'activité CPU bound), alors il faut regarder l'impact du parallélisme (attentes CX_PACKET, SOS_SCHEDULER_YIELD), et éventuellement affiner cette configuration (directive MAXDOP pour certaines requêtes, cost threshold for parallelism, max degree of parallelism). Si le profile d'activité montre que le goulot d'étranglement est ailleurs (disque en général, on parle d'activité IO bound), alors inutile de chercher à jouer avec la configuration du parallélisme. C'est en tout cas comme ça que j'aborde le sujet du parallélisme...

  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 772
    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 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Je rajouterais quelques éléments :
    1) un élément important pour les perf est de mettre "optimize for ad hoc workloads" à 1
    2) pour les fichiers il est bon :
    d'avoir plusieurs disques INDÉPENDANTS sur un système de stockage DÉDIÉ (par exemple un SAN mutualisé avec des LUNs taillés au couteau dans un agrégat RAID englobant tous les disques est parfaitement contre performant).
    d'entrelacer les fichiers de journalisation et les fichiers de données des différentes bases afin de mieux ventiler les IOs. Les uns étant écrits tous en même temps, de manière asynchrone au niveau du CHECKPOINT, les autres étant décrit de manière synchone...)
    NOTA : les fichiers de données de la base tempdb doivent aussi être ventilés sur plusieurs disques
    3) le parallélisme doit être géré à différents niveau : RAM (nombres de nœuds NUMA), nombre de disques physique pour la ventilation des IOs et nombre de CPU/core. Par exemple si vous avez 2 nœuds NUMA et ventilé les données de chaque base (tempdb incluse) sur 4 fichiers alors le bon parallélisme devrait être situé entre 2 et 4.
    Vous devez aussi jouer sur le seuil de cout du déclecnhement du parallélisme, beaucoup trop faible aujourd'hui en standard. Moi je le met entre 12 et 25 au lieu de 5.

    Pour tout cela, sur un serveur en prod, vous pouvez faire des essais.
    Pour les fichiers, l'outil SQLIOsim, pour le parallélisme prenez les 25 requête les plus couteuses et regardez les STATISTICS IO et TIME en augmentant progressivement le parallélisme (OPTION (MAXDOP...)).

    D'autres considérations importantes figurent dans notre livre... Un chapitre entier étant consacré au stockage et un autre à la configuration du serveur...

    Nom : Couverture livre SQL server Eyrolles.jpg
Affichages : 295
Taille : 105,0 Ko

    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
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    Merci Beaucoup a Vous deux de votre retour c'est plus clair dans mon petit esprit

Discussions similaires

  1. Questions Performance : retour d'expérience
    Par olivtone dans le forum MS SQL Server
    Réponses: 21
    Dernier message: 19/03/2015, 20h58
  2. [JSF] Retour d'experience?
    Par bslota dans le forum JSF
    Réponses: 8
    Dernier message: 17/12/2005, 12h09
  3. [Nist-SIP] Retours d'expérience
    Par Shiftane dans le forum API standards et tierces
    Réponses: 13
    Dernier message: 03/11/2005, 16h29
  4. [XP] Retour d'experience
    Par virgile04 dans le forum Méthodes Agiles
    Réponses: 10
    Dernier message: 22/10/2002, 08h25

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