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 :

Estimation du taux de fragmentation des index


Sujet :

Administration SQL Server

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 686
    Points : 716
    Points
    716
    Par défaut Estimation du taux de fragmentation des index
    Bonjour à tous,

    J'effectue plusieurs tests actuellement afin d'obtenir un taux de fragmentation de mes tables suites à des mouvements de données.
    Les mesures sont récupérées après REBUILD puis une insertion d'un lot de données #1 et une insertion d'un lot de données #2 qui reproduisent mes mouvements du weekend.


    Lire #4 pour la fin de l'histoire

  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
    21 761
    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 761
    Points : 52 544
    Points
    52 544
    Billets dans le blog
    5
    Par défaut
    et alors ???
    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 éclairé
    Inscrit en
    Mai 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 686
    Points : 716
    Points
    716
    Par défaut
    J'ai été présomptueux sur le résultat de ma requête, je reformule tout ça demain matin.

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 686
    Points : 716
    Points
    716
    Par défaut
    Re bonjour,

    Désolé d'avoir créé un message incomplet.
    Voici les requêtes que j'utilise en ce moment pour analyser mes indexs. Suite à mon message "Réindexation" sur ce même forum, j'ai voulu évaluer pourquoi et comment mes index se fragmentaient, notamment à quelle vitesse.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
    --- Requête #1 utilisée régulièrement pour visualiser l'effet des reconstructions et qui d'après ce que j'ai lu était utilisée sous SQL2000----
    USE MaBase
    DBCC SHOWCONTIG  ('MaTable');
    GO
     
    ---- résultat #1----
    DBCC SHOWCONTIG analyse la table 'MaTable'...
    Table*: 'MaTable' (494390022)*; index ID*: 1, base de données ID*: 5
    Analyse du niveau TABLE effectuée.
    - Pages analysées................................: 1070834
    - Extensions analysées..............................: 133867
    - Commutateurs d'extension..............................: 134456
    - Moyenne des pages par extension........................: 8.0
    - Densité d'analyse [meilleure valeur:valeur réelle].......: 99.55% [133855:134457]
    - Fragmentation d'analyse logique..................: 0.19%
    - Fragmentation d'analyse d'extension...................: 21.67%
    - Moyenne d'octets libres par page.....................: 554.6
    - Densité de page moyenne (complète).....................: 93.15%
    Exécution de DBCC terminée. Si DBCC vous a adressé des messages d'erreur, contactez l'administrateur système.
     
    ---- requête #2 utilisée lors de nos plans de maintenance pour le calcul des index depuis SQL2005
     
    DECLARE @maxfrag    Int
    SELECT @maxfrag = 5
    SELECT object_id, index_id, avg_fragmentation_in_percent
    FROM sys.dm_db_index_physical_stats (DB_ID('MaBase')
    ,OBJECT_ID('MaTable')
    ,NULL 
    ,NULL
    ,'DETAILED')
    WHERE avg_fragmentation_in_percent > CONVERT(CHAR(2),@maxfrag) and Index_id > 0
    ORDER BY CONVERT(DECIMAL(9,2),avg_fragmentation_in_percent) DESC;
     
    ---- résultat #2----
    object_id                    index_id                 avg_fragmentation_in_percent
    494390022	          1	                        96,2962962962963
    494390022	          2	                        50
    494390022	          1	                        11,5730337078652
    494390022	          2	                        10,8540925266904
    Les index de la table sont analysés et sortent deux résultats différents. Or avec le code #2 certains de mes index semblent continuellement fragmentés (en fonction de la table et de leur utilisation évidemment).
    Du coup la reconstruction parait inefficace en fonction de la méthode d'analyse (visible sur la #1 et mitigé sur la #2).

    Je dois mal interpréter ces résultats, est ce le cas ?

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 544
    Points
    52 544
    Billets dans le blog
    5
    Par défaut
    tout dépend de la taille d'un index. La fragmentation est calculée à l'extent. Un index de 8 pages ou moins sera donc toujours fragmenté !

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

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 139
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Mais à partir de combien de pages peut-on considérer que le taux de fragmentation d'un index devient "représentatif" et appel à une maintenance (Rebuild ou Reorganize) ?

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

    C'est à vous de le mesurer.
    Il est clair que pour un index comme celui que vous montrez, de 133867 extents, il est nécessaire d'avoir une fragmentation faible pour avoir de bonnes performances.
    Pour des indexes dont le nombre de pages | extents est faible, vous pouvez considérer qu'en dessous de 25% de fragmentation, vous pouvez les réorganiser, et pour un pourcentage sensiblement supérieur, vous pouvez les reconstruire.
    Mais là encore c'est purement indicatif.

    Je vois que vous êtes en version 2005, donc ne vous fatiguez plus à mesurer la fragmentation de vos indexes avec la commande DBCC SHOWCONTIG : utilisez les fonction et vue de gestion dynamique sys.dm_db_index_physical_stats et sys.dm_db_index_usage_stats

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fragmentation des index
    Par john94260 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/05/2014, 13h07
  2. Estimer le taux de croissance des archivelog
    Par Dajon dans le forum Administration
    Réponses: 2
    Dernier message: 20/12/2011, 10h34
  3. Comment estimer la taille des index
    Par ouadie99 dans le forum Administration
    Réponses: 1
    Dernier message: 01/12/2008, 15h12
  4. Réponses: 4
    Dernier message: 16/03/2004, 14h16
  5. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11

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