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 :

optimization scripts T-SQL


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Par défaut optimization scripts T-SQL
    Bonjour,

    Quels conseils pouvez-vous me donner pour optimizer du code T-SQL ?
    Ya-t-il des outils ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut INDEX
    L'outil principal pour optimiser la durée des requêtes est la mise en place et la maintenance d'index.
    lorsque tu utilises un outil de modelisation comme POWER AMC qui gènèrent les index en même temps que les tables.
    Il existe un outil d'optimisation par indexation sur sql serveur 2005 (l'assistant parametrage du moteur de bases de données sql serveur 2005).
    Vous pouvez aussi comme beaucoup, creer manuellement vos index ( CREATE INDEX )
    Cela depend de la volumetrie de vos table, pour moins de 1000 lignes, aucune indexation n'est nécessaire.
    Quel est la durée de vos requête ?

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Par défaut
    La durée des reqêtes est environ de 3h.
    Je pensais plus aussi à une meilleure structuration du code. Ce qui permettrai là aussi de gagner du temps.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Par défaut
    Bonjour,

    Lorsqu'on travaille avec de gros objets, la stratégie d'indexation n'est plus suffisante.

    Si vous travaillez sous 2005, je vous conseille d'explorer ces quelques stratégies (à moins que ce ne soit déjà fait).

    - Si ce n'est pas déjà fait, apprenez à lire dans son ensemble et tous ses détails le plan d'exécution. Aussi, il est impératif de savoir travailler avec le Profiler.

    - Le partionnement des tables et index si vos instances se trouvent sur des serveurs multiprocesseurs.

    - Évaluation de la complexité et le volume des requêtes afin d'ajuster le parallelisme permis sur les instances. Plus les requêtes, en moyenne sont complexes, plus il faut laisser de place au paralellisme. Si, par exemple, vous roulez en boucle la même requête complexe (ie beaucoup de sous-requêtes) plusieurs millions de fois alors que le reste du traffic se compose de petites requêtes simples et que votre serveur a 8 processeurs hyperthreadés, vous pourriez, par exemple, établir le niveau de parallellisme à 4.

    - Réévaluation du niveau de sécurité RAID des disques du serveur. Souvent, le niveau de sécurité est redondant quand la stratégie de backups est solide. J'ai déjà vu ce simple changement amener un gain de 200% en performance. Quand les processeurs et la mémoire ne sont pas utilisés pleinement, c'est souvent le i/o qui est bottleneck...

    - Utiliser des stratégies de staging. Vous pouvez avoir des index hyper performants pour la lecture de vos tables. Par contre, quand vient le temps de modifier les données, ces mêmes index peuvent ralentir le processus. Il faut donc parfois transporter une partie ou la totalité des données dans une table, en bulk, dans une table optimisée pour ce processus et ensuite retransporter dans notre table primaire, toujours en prenant avantage du bulk, nos données transformées.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma requete ouvre un curseur dans la table et fait des insert ou update dans d'autre table (dispatching)
    Un curseur n'est pas optimisable. Evitez TOUT curseur. Ne faites jamais que du code ensembliste (requêtes). Il n'y a aucune raison de faire des curseurs surtout depuis la version 2005. Dans le pire des cas c'est que la base est mal modélisée.

    Lisez les articles que j'ai écrit sur l'optimsation dans SQL Server :
    1) http://www.sqlspot.com/Voulez-vous-optimiser-votre.html
    2) http://sqlpro.developpez.com/cours/s...r_avoidCursor/
    3) http://www.sqlspot.com/INDEXATION-un...l-exemple.html
    4) http://sqlpro.developpez.com/cours/optimiser/

    Les pertes de perfomances sont liées :
    à 60% à un mauvais modèle de données : respecte t-il les formes normales ?
    à 20% à une mauvaise indexation : les index sont-ils pertinents et efficace ? Les accès se font-il dans plus de 80% des cas sur des index ?
    à 10% sur les réglages du serveur
    à 10% sur la structure des fichiers de la base : fichiers de tailles fixes, agrégats sur disques physique, répartition des espaces de stockage...

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

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Par défaut
    Bonjour,

    Je suis actuellement aussi à la recherche d'optimisation de T-SQL

    j'ai un serveur qui doit traitrer des tables pouvant allez jusqu'a 3 millions de lignes

    bien sur mes tables sont indexées correctement.

    ma requete ouvre un curseur dans la table et fait des insert ou update dans d'autre table (dispatching)

    aujourd'hui pour traiter 300 mille ligne ma requete prend 120 minutes environ
    pourtant le serveur n'est utilisé qu'a 50% de ses capacités

    Une petite idée pour pouvoir optimiser les temps de traitement?

    Cordialement.

Discussions similaires

  1. execution partielle d'un script PL/SQL
    Par dyvim dans le forum PL/SQL
    Réponses: 24
    Dernier message: 29/12/2005, 11h33
  2. Execution Script PL/SQL
    Par hair_peace dans le forum PL/SQL
    Réponses: 13
    Dernier message: 29/06/2005, 10h55
  3. Réponses: 24
    Dernier message: 31/05/2005, 15h07
  4. Ecriture de script en SQL
    Par gillou4 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/04/2005, 09h23
  5. [intermedia] besoin d'aide sur script PL/SQL
    Par SteelBox dans le forum PL/SQL
    Réponses: 8
    Dernier message: 05/01/2004, 19h59

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