Partager via


Instructions pour les opérations d’index en ligne

Lorsque vous effectuez des opérations en ligne sur les index, les directives suivantes s'appliquent :

  • Les index en cluster doivent être créés, reconstruits ou supprimés hors connexion lorsque la table sous-jacente contient les types de données objet volumineux (LOB) suivants : image, ntext et text.

  • Les index des tables temporaires locales ne peuvent pas être créés, reconstruits ou supprimés en ligne. Cette restriction ne s’applique pas aux index sur les tables temporaires globales.

Remarque

Les opérations d’index en ligne ne sont pas disponibles dans chaque édition de MicrosoftSQL Server. Pour obtenir la liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2014.

Le tableau suivant présente les opérations d’index qui peuvent être effectuées en ligne et les index exclus de ces opérations en ligne. Des restrictions supplémentaires sont également incluses.

Opération d’index en ligne Index exclus Autres restrictions
MODIFIER L'INDEX RECONSTITUER Index cluster désactivé ou vue indexée désactivée

Index XML

Index columnstore

Index de table temporaire locale
La spécification du mot clé ALL peut entraîner l’échec de l’opération lorsque la table contient un index exclu.

Des restrictions supplémentaires sur la reconstruction des index désactivés s’appliquent. Pour plus d’informations, consultez Désactiver les index et les contraintes.
CRÉER UN INDEX Index XML

Index cluster unique de départ sur une vue

Index de table temporaire locale
CRÉER INDEX AVEC DROP_EXISTING Index cluster désactivé ou vue indexée désactivée

Index de table temporaire locale

Index XML
DROP INDEX Index désactivé

Index XML

Index non-clustérisé

Index de table temporaire locale
Plusieurs index ne peuvent pas être spécifiés dans une seule instruction.
ALTÉRER TABLE AJOUTER CONTRAINTE (CLÉ PRIMAIRE ou UNIQUE) Index de table temporaire locale

Index clusterisé
Une seule sous-clause est autorisée à la fois. Par exemple, vous ne pouvez pas ajouter et supprimer des contraintes PRIMARY KEY ou UNIQUE dans la même instruction ALTER TABLE.

La table sous-jacente ne peut pas être modifiée, tronquée ou supprimée pendant qu’une opération d’index en ligne est en cours.

Le paramètre d’option en ligne (ON ou OFF) spécifié lorsque vous créez ou supprimez un index cluster est appliqué à tous les index non cluster qui doivent être reconstruits. Par exemple, si l’index cluster est créé en ligne à l’aide de CREATE INDEX WITH DROP_EXISTING, ONLINE=ON, tous les index non cluster associés sont recréés en ligne également.

Lorsque vous créez ou régénérez un index unique en ligne, le générateur d’index et une transaction utilisateur simultanée peuvent essayer d’insérer la même clé, ce qui enfreint l’unicité. Si une ligne entrée par un utilisateur est insérée dans le nouvel index (cible) avant que la ligne d’origine de la table source soit déplacée vers le nouvel index, l’opération d’index en ligne échoue.

Bien qu’elle ne soit pas courante, l’opération d’index en ligne peut provoquer un blocage lorsqu’elle interagit avec les mises à jour de base de données en raison d’activités utilisateur ou d’application. Dans ces rares cas, le moteur de base de données SQL Server sélectionne l’activité de l’utilisateur ou de l’application en tant que victime d’interblocage.

Vous pouvez effectuer des opérations DDL d’index en ligne simultanées sur la même table ou vue uniquement lorsque vous créez plusieurs index non cluster ou réorganisez des index non cluster. Toutes les autres opérations d’index en ligne effectuées en même temps échouent. Par exemple, vous ne pouvez pas créer un index en ligne lors de la reconstruction d’un index existant en ligne sur la même table.

Une opération en ligne ne peut pas être effectuée lorsqu’un index contient une colonne du type d’objet volumineux, et dans la même transaction, il existe des opérations de mise à jour avant cette opération en ligne. Pour contourner ce problème, placez l’opération en ligne en dehors de la transaction ou placez-la avant toute mise à jour dans la transaction.

Considérations relatives à l’espace disque

En règle générale, les besoins en espace disque sont identiques pour les opérations d’index en ligne et hors connexion. Une exception est un espace disque supplémentaire requis par l’index de mappage temporaire. Cet index temporaire est utilisé dans les opérations en ligne sur les index qui créent, reconstruisent ou suppriment un index cluster. La suppression d’un index cluster en ligne nécessite autant d’espace que la création d’un index cluster en ligne. Pour plus d'informations, consultez Exigences en matière d’espace disque pour les opérations DDL d'index.

Considérations relatives aux performances

Bien que les opérations d’index en ligne autorisent l’activité de mise à jour utilisateur simultanée, les opérations d’index prendront plus de temps si l’activité de mise à jour est très lourde. En règle générale, les opérations d’index en ligne sont plus lentes que les opérations d’index hors connexion équivalentes, quel que soit le niveau d’activité de mise à jour simultanée.

Étant donné que les structures source et cible sont conservées pendant l’opération d’index en ligne, l’utilisation des ressources pour les transactions d’insertion, de mise à jour et de suppression est augmentée, potentiellement à double. Cela peut entraîner une diminution des performances et une utilisation accrue des ressources, en particulier le temps processeur, pendant l’opération d’index. Les opérations d’index en ligne sont entièrement journalisées.

Bien que nous vous recommandons d’effectuer des opérations en ligne, vous devez évaluer votre environnement et des exigences spécifiques. Il peut être optimal d’exécuter des opérations d’index hors connexion. Pour ce faire, les utilisateurs ont un accès restreint aux données pendant l’opération, mais l’opération se termine plus rapidement et utilise moins de ressources.

Sur les ordinateurs multiprocesseurs exécutant SQL Server 2014, les instructions d’index peuvent utiliser davantage de processeurs pour effectuer les opérations d’analyse et de tri associées à l’instruction d’index comme d’autres requêtes. Vous pouvez utiliser l’option d’index MAXDOP pour contrôler le nombre de processeurs dédiés à l’opération d’index en ligne. De cette façon, vous pouvez équilibrer les ressources utilisées par l’opération d’index avec celles des utilisateurs simultanés. Pour plus d’informations, consultez Configurer des opérations d’index parallèles. Pour plus d’informations sur les éditions de SQL Server qui prennent en charge les opérations indexées parallèles, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2014.

Étant donné qu’un verrou S-lock ou Sch-M est conservé dans la phase finale de l’opération d’index, soyez prudent lorsque vous exécutez une opération d’index en ligne à l’intérieur d’une transaction utilisateur explicite, telle que BEGIN TRANSACTION... Bloc COMMIT. Cette action maintient le verrou jusqu'à la fin de la transaction, gênant ainsi l'accès concurrentiel des utilisateurs.

La reconstruction d’index en ligne peut augmenter la fragmentation lorsqu’elle est autorisée à s’exécuter avec les options MAX DOP > 1 et ALLOW_PAGE_LOCKS = OFF. Pour plus d’informations, consultez fonctionnement : reconstruction d’index en ligne : peut entraîner une fragmentation accrue.

Considérations relatives au journal des transactions

Les opérations d'index à grande échelle, réalisées hors connexion ou en ligne, peuvent générer de fortes charges de données susceptibles de remplir rapidement le journal de transactions. Pour vous assurer que l’opération d’index peut être restaurée, le journal des transactions ne peut pas être tronqué tant que l’opération d’index n’a pas été terminée. toutefois, le journal peut être sauvegardé pendant l’opération d’index. Par conséquent, le journal des transactions doit disposer d'un espace suffisant pour stocker les transactions des opérations d'index et les éventuelles transactions utilisateur simultanées pendant la durée de l'opération d'index. Pour en savoir plus, consultez l'espace disque du journal de transaction pour les opérations d'indexation.

Fonctionnement des opérations d'index en ligne

Exécuter des opérations en ligne sur les index

ALTER INDEX (Transact-SQL)

CRÉER INDICE (Transact-SQL)