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 :

Pb de performance sur multiples scan


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Macfurp
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut Pb de performance sur multiples scan
    Bonjour,

    j'ai un problème de performance sur une application qui exécute séquentiellement plusieurs dizaines de requètes, à chaque utilisation sur une seule table, et ces requètes provoquent du Scan systématique.
    Les tables utilisées sont de volumétrie moyenne (entre 500.000 et 1M lignes, mais selon l'utilisation choisie seule une table est utilisée.
    Je n'ai aucun moyen d'intervenir sur cette application développée en PHP qui soumet des procédures stockées à la volée et d'autre part le nombre de requètes exécutés est trop varié pour permettre une indexation correcte et surtout la structure des tables parfaitement inadaptée au besoin.

    Le nombre d'utilisateurs étant relativement restreint je me demandais si je pouvais m'orienter vers une technique visant à placer la table utilisée quelque part en mémoire et espérer un gain les temps d'attente...

    Quelqu'un aurait-il une idée sur la question ??

  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 010
    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 010
    Billets dans le blog
    6
    Par défaut
    et surtout la structure des tables parfaitement inadaptée au besoin.
    Dans ce cas il n'y a aucun remède. Il aurait plus simplement fallut faire développer votre application par des professionnels ayant un bonne maîtrise des problématique d'optimisation pour des bases à forte volumétrie.

    Lisez les articles que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/optimisation/

    Seule solution (qui est un pis aller) ajouter des ressources au serveur : augmentation de RAM tendant vers la taille de la base, augmentation du nombre de processeurs.... Mais cela vous coutera à terme plus cher que de remanier la structure de la base, car il s'agit d'une véritable fuite en avant !
    Vous pouvez aussi tenter de faire ces requêtes par des lectures inconsistantes (niveau d'isolation READ UNCOMMITTED). Au moins il n'y aura aucun verrou posé. Mais le contrepartie est que vous risquer de lire des données "sales".

    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 Avatar de Macfurp
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut
    Merci pour les infos et la documentation très instructive...
    J'en déduis que la marge de maneuvre dont je dispose est très réduite.
    Les traitements n'effectuent que des lectures et les données ne sont pas mises à jour en journée aussi j'ai effectué des mesures avec l'option WITH (NOCLOCK) sur tous les accès malheureusement je n'ai constaté aucun gain significatif sur les temps de réponses.

  4. #4
    Membre averti Avatar de Macfurp
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut
    Oups, il s'agit bien de l'option WITH (NOLOCK) !

    En complément, les requètes sont constituées dynamiquement par les procédures stockées en fonctions des valeurs fournies aux différents paramètres de la procédure.
    Aussi le traitement finit par effectuer un EXEC @Requete une fois la requète constituée dans la variable; ce mode de fonctionnement ne peut-il entrainer un allongement des temps de réponse ?

  5. #5
    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,

    ce mode de fonctionnement ne peut-il entrainer un allongement des temps de réponse ?
    Malheureusement, si, parce que les plans des requêtes exécutées par un EXEC(@maChaîne) ne sont pas conservés par SQL Server.
    Les requêtes sont compilées à chaque appel, et la compilation coûte cher

    Un demi-remède est d'exécuter ces procédures en utilisant la procédure stockée système sp_executesql si c'est à peu près tout le temps les mêmes requêtes qui sont exécutées, aux valeurs des parmètres près (lisez bien la rubrique notes).
    Le mieux restant d'écrire des procédures stockées, et dans votre cas de tout reprendre, ce qui n'est pas facile à faire comprendre et encore moins à faire accepter

  6. #6
    Membre averti Avatar de Macfurp
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut
    Merci une fois encore, même si je constate que je cumule les handicaps, la qualité des réponses données sur le forum reste une grande satisfaction.

Discussions similaires

  1. [VB .Net] Performance sur parcours de hashtable
    Par plasticgoat dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/12/2005, 19h25
  2. Problème de performance sur une "grosse" BD
    Par frechy dans le forum Installation
    Réponses: 9
    Dernier message: 19/09/2005, 16h52
  3. Réponses: 2
    Dernier message: 29/08/2005, 16h12
  4. [index] performance sur une recherche descendante
    Par jean-jacques varvenne dans le forum Oracle
    Réponses: 16
    Dernier message: 15/01/2005, 10h22
  5. [Crystal] Performance sur grosses base de données
    Par Nico118 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 14/11/2003, 15h27

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