|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 201 ![]() |
bonjour
pour défragmenter des indexes je trouve pas mal d'infos sur le net, à priori la reconstruction serait le plus efficace mais concernant les tables, est-ce utile que les pages soient contigües ? comment défragmente-t-on une table ? (comment trouve-t-on le niveau de fragmentation ?) toutes mes tables ont un index clustered, je ne pense pas que ca entre en compte mais je le précise quand même ... merci
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 201 ![]() |
je pense avoir trouvé ce qu'il faut sur smo (dll du modèle objet d'sql server)
on peut faire rebuild ou rebuildindexes sur un objet table je regarderais au passage la requete qui passe dans profiler ^^
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
|
|
00
|
|
|
#3 |
![]() ![]() Administrateur de base de données Inscription : août 2007 Messages : 1 159 ![]() |
Hello,
La table est votre index clustered. Si vous defragmentez celui-ci, vous defragmentez votre table. Bonne journee |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 201 ![]() |
ok, ca ne me serait pas venu à l'idée, bien que d'un côté ca peut paraitre logique
et ca explique pourquoi tous les sites qui parlent de défragmentation de table disent de défragmenter les indexes ^^ et sur une table sans index clustered ?
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
|
|
00
|
|
|
#5 | ||
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 724 ![]() |
Citation:
Citation:
++ |
||
|
00
|
|
|
#6 | |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 724 ![]() |
Citation:
On peut parler également de reconstruction de tables sans index cluster. On appelle cela reconstruire une table HEAP. Dans ce cas la notion de fragmentation n'est pas la même que pour les indexes. Il y a différentes méthodes pour défragmenter une table HEAP comme la création d'un index cluster sur la table, l'utilisation de la commande ALTER TABLE REBUILD depuis SQL Server 2008, l'export des données de la table HEAP vers une nouvelle table .... ++ |
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 201 ![]() |
merci bien à vous 2 pour ces infos
ces reconstructions seront faites seulement en cas d'arrêt chez les clients, sinon ca sera une réorganisation des indexes seulement, qui doit être moins verrouillant qu'un rebuild
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Bonjour,
Une réorganisation d'index (ALTER INDEX ... REORGANIZE ou DBCC INDEXDEFRAG sous SQL Server 2000) ne fait que réorganiser logiquement le niveau feuille de l'index, et ce en conservant le FILLFACTOR s'il y en a un qui a été spécifié (sinon c'est celui par défaut, zéro : page remplie au maximum). C'est-à-dire que seul le chaînage des pages est affecté, de façon à éviter les aller-retours lors des parcours d'index, et qu'aucune nouvelle page n'est allouée. Cela convient souvent dans le cas où l'index est fragmenté à mois de 20/30%. C'est ce qui fait que le niveau de verrouillage est faible, et que l'opération se fait de toute façon en ligne. Une défragmentation d'index (ALTER INDEX ... REBUILD ou DBCC DBREINDEX sous SQL Server 2000) reconstruit littéralement l'index. Si la reconstruction est faite ONLINE, un index est créé et maintenu en parallèle de l'index existant, ce qui fait que de nouvelles pages sont allouées. A la fin de la défragmentation, le vieil index est supprimé et remplacé par le nouveau, et cela nécessite un verrou de modification de schéma (le plus strict qui existe) et cela peut poser des petits problèmes. Cela dit ce verrou est pris sur un très court laps de temps, et l'accès aux colonnes sous-jacentes est toujours possible durant la reconstruction. Si la défragmentation se fait OFFLINE, l'accès aux colonnes sous-jacentes n'est pas possible, et s'il s'agit de l'index cluster, l'accès à la table est impossible. L'index est détruit puis recréé. Notez qu'un index cluster d'une table ayant des colonnes LOB (de type image, text ou ntext sous SQL Server 2000, et varbinary(max), varchar(max) ou nvarchar(max) sous SQL Server 2005 et suivants) ne peut pas être reconstruit ONLINE. Il en va de même si vous reconstruisez une partition d'un index, qu'il soit cluster ou non-cluster. Pour en savoir plus sur la différence entre un index cluster et un index non-cluster, je vous invite à lire le billet que j'ai écrit à ce sujet. @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
Copyright © 2000-2012 - www.developpez.com