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 :

SQL Server 2012 : Défragmentation d'indexes


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut SQL Server 2012 : Défragmentation d'indexes
    Bonjour,

    Voila mon problème, je bataille depuis plusieurs jours sur des baisses de performances dans mon serveur.

    J'ai fais différentes rechercher et je tombe sur la défragmentation des indexes, ça semble être une bonne idée, alors ni une ni deux, je lance un defrag sur tout les indexes d'une table de 45 mio de records...

    Après 25 minutes il me dit qu'il a fini, alors je consulte l'état de fragmentation des indexes, et tous sont à 0%.

    Je me dis super, mais la je me rend compte que j'ai des accès disque non stop et que le cpu est utilisé entre 5% et 20%.
    Au bout de 2h-3h les accès disque s’arrêtent et le cpu arrête aussi de bossé.

    La je re-consulte l'état de mes indexes et HO surprise il sont tous fragmenté à 99.9% (bien pir qu'avant)

    Quelqu'un a une explication sur ce qui se passe ?

    Pour info c'est un server test que je suis seul a utilisé, donc pas d'autres accès que le mien.

    Merci pour vos réponses a+

  2. #2
    Membre émérite
    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
    Par défaut
    Si les indexs se fragmentent, ça veut dire qu'il y a de l’écriture sur les tables. Regarde les statistiques d'écriture de tes indexs. J'ai fait une application qui te permettra rapidement de consulter les statistiques d'utilisation de tes indexs. Regarde dans ma signature.
    S'il n'y a pas d'écriture et que tes indexs se fragmentent, je ne vois pas d'où vient le problème

  3. #3
    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 : 43
    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,

    S'il n'y a pas d'écriture et que tes indexs se fragmentent, je ne vois pas d'où vient le problème
    Si les index on été défragmentés et que par la suite la base de données n'est accédée qu'en lecture, les index ne se fragmenteront pas.

    Si vos index se fragmentent si vite, c'est qu'ils sont sur de nombreuses colonnes et/ou qu'il portent sur des colonnes de type chaîne ou uniqueidentifier.

    Retenez que moins vos index comportent de colonnes, moins ils ont de chances de se fragmenter rapidement. D'autre part si vos index portent sur des colonnes de type entier, c'est encore mieux.
    Les colonnes de type entier avec la propriété d'auto-incrémentation (IDENTITY) se fragmentent très peu.

    J'ai donné quelques scripts pour connaître les différentes caractéristiques des index, mais le tout dernier, tout frais est le plus complet.

    Pourriez-vous en poster le résultat lorsque vous avez des problèmes de performances ?
    Maintenez vous les statistiques de cette base de données ?

    @++

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,


    Si les index on été défragmentés et que par la suite la base de données n'est accédée qu'en lecture, les index ne se fragmenteront pas.

    Si vos index se fragmentent si vite, c'est qu'ils sont sur de nombreuses colonnes et/ou qu'il portent sur des colonnes de type chaîne ou uniqueidentifier.

    Retenez que moins vos index comportent de colonnes, moins ils ont de chances de se fragmenter rapidement. D'autre part si vos index portent sur des colonnes de type entier, c'est encore mieux.
    Les colonnes de type entier avec la propriété d'auto-incrémentation (IDENTITY) se fragmentent très peu.

    J'ai donné quelques scripts pour connaître les différentes caractéristiques des index, mais le tout dernier, tout frais est le plus complet.

    Pourriez-vous en poster le résultat lorsque vous avez des problèmes de performances ?
    Maintenez vous les statistiques de cette base de données ?

    @++

    Re un petit explication sur moi avant d'allez plus loin.

    J'ai été parachuté pseudo DBA car je suis celui qui gueule la plus fort sur ceux qui respectent pas les principe de base (genre vues avec 12 étages de select imbriqués qui retourne 200 colonnes dont la moitié ne servent à rien ou tables de 50mio de records sans clé primaire etc..)

    Sans entré dans le détail car secret professionnel etc...
    Nous avons plusieurs problèmes que j’essaie de réglé un par un en me "formant" un peu sur le tas.

    Sinon j'ai lancé le script dont vous parler et j'ai le résultat suivant j'ai remplacer le nom de la table par table, les id par id1 etc et les valeurs indexées par Val1 etc (Secret professionnel oblige):
    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
     
    NONCLUSTERED	0.001503	2.17E-05	31883669	Table_Id1_NDX			Id1				NULL				4	1	0	0	0	0	NULL	31914474	31883669	37591		31914474	631896	28.05.2012 08:57	0	26	0	26	21	28.05.2012 15:42	3	0.01	0	LEAF	NULL
    NONCLUSTERED	0		0.007194245	31883669	Table_Id2_NDX			Id2				NULL				5	1	0	0	0	0	NULL	31914474	31883669	37591		31914474	632376	28.05.2012 09:05	1	3	0	4	21	28.05.2012 15:36	3	0.01	0	LEAF	NULL
    NONCLUSTERED	0.003414	9.26E-06	31883669	Table_Id3Id4Id5Id6Id7Id2_NDX	Id3, Id4, Id5, Id6, Id7, Id2	NULL				6	1	0	1	0	0	NULL	31914474	31883669	37591		31914474	1225688	28.05.2012 09:15	1	0	0	1	21	28.05.2012 15:36	4	0.01	0	LEAF	NULL
    NONCLUSTERED	0		0.111111112	31883669	Table_Id4Id5Id6_NDX		Id4, Id5, Id6			NULL				2	1	0	0	0	0	NULL	31914474	31883669	37591		31914474	771720	28.05.2012 08:44	0	0	0	0	21	NULL			4	0	0	LEAF	NULL
    NONCLUSTERED	0		0.5		31883669	IX_NumTmp2			NumTmp				Id3, Id4, Id5, Id6, Id2, Id7	19	1	0	0	0	0	NULL	31914474	31883669	37591		31914474	1237192	28.05.2012 09:34	0	0	0	0	21	NULL			4	0	0	LEAF	NULL
    STAT		0.226816	0.000640615	NULL		_WA_Sys_00000009_1A9995E3	Val1				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	40717264	40717264	27318531	321294		NULL	11.07.2011 17:56	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0		0.083333336	NULL		_WA_Sys_Id5_1A9995E3		Id5				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	39691375	39691375	22722897	317883		NULL	20.05.2011 07:13	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0		0.018518519	NULL		_WA_Sys_Id6_1A9995E3		Id6				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	39691375	39691375	22722897	317883		NULL	20.05.2011 07:05	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0		0.039999999	NULL		_WA_Sys_Id7_1A9995E3		Id7				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	39691375	39691375	22722897	306995		NULL	20.05.2011 07:13	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0.107266	0.004761905	NULL		_WA_Sys_Val2_1A9995E3		Val2				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	42894215	42894215	20104197	329226		NULL	10.11.2011 10:29	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0.272		0.004716981	NULL		_WA_Sys_Val3_1A9995E3		Val3				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	42894215	42894215	20104197	329226		NULL	10.11.2011 10:29	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0.5		0.013888889	NULL		_WA_Sys_Val4_1A9995E3		Val4				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	42894215	42894215	20104197	329226		NULL	2011-11-10 10:29:33.043	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0.5		0.034482758	NULL		_WA_Sys_Val5_1A9995E3		Val5				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	44847916	44847916	21501187	334977		NULL	23.02.2012 08:31	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0.4		0.028571429	NULL		_WA_Sys_0000000E_1A9995E3	Val6				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	44847916	44847916	21501187	334977		NULL	23.02.2012 08:31	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0.738509	0.001081081	NULL		_WA_Sys_00000008_1A9995E3	Val7				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	40717271	40717271	27318528	321294		NULL	11.07.2011 17:56	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0.320388	0.002320186	NULL		_WA_Sys_00000007_1A9995E3	Val8				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	40717273	40717273	27318528	321294		NULL	11.07.2011 17:56	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0.142796	0.001883239	NULL		_WA_Sys_00000006_1A9995E3	Val9				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	40717273	40717273	27318528	321294		NULL	11.07.2011 17:56	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL
    STAT		0		0.200000003	NULL		_WA_Sys_00000013_1A9995E3	Val10				NULL				NULL	NULL	NULL	NULL	NULL	NULL	NULL	44941272	44941272	21381595	335849		NULL	28.02.2012 16:08	NULL	NULL	NULL	NULL	NULL	NULL			NULL	NULL	NULL	NULL	NULL

  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 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
    Toutes ces données ne nous servent à rien sans la méthode, c'est à dire la requête qui à servit à produire ces résultat...

    En effet, nous ne sommes pas devins !

    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 éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Toutes ces données ne nous servent à rien sans la méthode, c'est à dire la requête qui à servit à produire ces résultat...

    En effet, nous ne sommes pas devins !

    A +
    "Sinon j'ai lancé le script dont vous parler et j'ai le résultat suivant j'ai remplacer le nom de la table par table, les id par id1 etc et les valeurs indexées par Val1 etc (Secret professionnel oblige): "

    Voir message de "elsuket" 2 post au dessus

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

Discussions similaires

  1. SQL Server 2012 : Indexes FILL_FACTOR
    Par Donpi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 13/06/2012, 17h53
  2. [Geek] Kinect et SQL Server 2012
    Par Ptit_Dje dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 21/10/2011, 20h00
  3. [SQL Server 2K5] Restauration et Index
    Par achestyx dans le forum Administration
    Réponses: 10
    Dernier message: 24/07/2009, 15h55
  4. [SQL SERVER 2000] Reorganisation d'index et des données
    Par dens19 dans le forum Administration
    Réponses: 4
    Dernier message: 17/06/2009, 21h49
  5. [SQL SERVER 2000] Clés primaires/index qui disparaissent
    Par voyageur dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 09/01/2008, 15h07

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