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 :

Optimisation base de données SQL Server 2000: Indexation


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Optimisation base de données SQL Server 2000: Indexation
    Bonjour à tous,

    Je travail actuellement sur une application web qui utilise une base de données SQL Server 2000. Le principal problème auquel j'étais confronté jusque là étais le temps d'affichage assez long, plus de 4 min environ.
    En supprimant les index des tables et en les recréant à nouveau, je suis passé de plus de 4 min à environ 25 s (secondes), ce qui parait assez considérable.

    Aussi, je me pose les questions suivantes:

    1°) Les tables étant bien indéxées, et surtout n'ayant rien changé, pourquoi la suppression et la recréation d'un index apporte t'il une optimisation à ma base de données. Je n'ai pas créé d'index supplémentaires sur la ou les tables que ceux existant déjà. Je n'ai fait que supprimer les index existants et les recréés à nouveau.

    2°) Comment faire pour améliorer d'avantage le temps d'affichage, pour descendre en dessous de 25 s si possible.

    3°) Comment faire pour éviter de procéder encore de la même manière au cas où le problème de lenteur se présenterai à nouveau?

    Merci d'avance pour vos retours.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Bonjour, c'est un vaste sujet et je n'ai que très peu de temps. Un index doit être maintenu avec un plan de maintenance. Si un index est créé sur une table de 3 lignes et que maintenant elle en fait 5 000 000 avec beaucoup d'ajout et de suppression, l'index ne sert plus à grand chose. Il faut donc mettre en place un plan de maintenance qui réorganisera/recréera les indexs ainsi que les statistiques.

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 118
    Points : 180
    Points
    180
    Par défaut
    Bonjour, c'est certainement dû à la fragmentation de tes index.

    Il est recommandé de reconstruire un index si la fragmentation est supérieure ou égale à 30% et de réorganiser l'index si elle est supérieure ou égale à 5%.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci pour vos retours.

  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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Effectivement il est nécessaire de maintenir les index régulièrement; comme l'a dit darkelend, au fur et à mesure que la base de données vit, donc que ses données sont modifiées, l'index peut se fragmenter :

    - si l'on doit ajouter une ligne au milieu d'une page pleine (dans le sens où elle ne peut plus accepter l'ajout d'une nouvelle ligne), alors la page est coupée en deux (split de page) et une nouvelle page est créé, les deux pages étant remplies à moitié

    - si l'on a une table avec de nombreuses lignes et que l'on réalise par exemple de l'archivage, un certain nombre de lignes disparaissent de la table source

    - si l'on modifie la valeur des colonnes participant à la clé d'un index, celui-ci peut s'en fragmenter

    D'autre part le chaînage logique des pages ne suit plus l'ordre physique, ce qui entraîne des lectures supplémentaires. La reconstruction (ALTER INDEX ... REBUILD ou DBCC DBREINDEX sous SQL Server 2000 et antérieurs) et la défragmentation (ALTER INDEX ... REORGANIZE ou DBCC INDEXDEFRAG sous SQL Server 2000 et antérieurs) permettent de réduire, si ce n'est d'éliminer cet effet.
    Pour en savoir un peu plus, jetez un œil par ici.

    En ce qui concerne les plans de maintenance, s'ils permettent avec un minimum d'effort de maintenir une base de données de petite taille, ils trouvent vite leur limite dès que le volume de la base de données est conséquent. Il en va de même pour les statistiques. C'est là que l'on peut écrire des procédures pour ce faire, comme le montre SQLPro, qui seront plus sélectives et plus fines qu'un plan de maintenance.

    Donc si vous prévoyez de réaliser des procédures, faites attention à réaliser la maintenance des statistiques avant celle des index, ou de ne mettre à jour que les statistiques de colonne (UPDATE STATISTICS maTable WITH COLUMNS). En effet lorsqu'on reconstruit un index, comme il est nécessaire de parcourir toute la table, la collection des statistiques se fait en parallèle et sans échantillonnage (équivalent à UPDATE STATISTICS maTable (monIndex) WITH FULLSCAN). Si on la fait suivre d'un UPDATE STATISTICS maTable, alors le recalcul de la statistique se fait par échatillonage, écrasant la précédente collection, qui était de meilleure qualité / précision.

    @++

Discussions similaires

  1. echec sauvegarde base de donnée sql server 2000
    Par alicia26 dans le forum Administration
    Réponses: 6
    Dernier message: 07/11/2008, 14h58
  2. Réponses: 4
    Dernier message: 27/03/2008, 09h39
  3. Partage d'une base de données SQL Server 2000
    Par YounesM dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/11/2007, 11h34
  4. Réponses: 1
    Dernier message: 09/05/2006, 16h31

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