Partager via


Exigences en matière d'espace disque pour les opérations DDL sur les index

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

L'espace disque est un élément important à prendre en compte lors de la création, de la reconstruction ou de la suppression d'index. Un espace disque inadéquat peut réduire les performances, voire entraîner l'échec de l'opération d'index. Cet article fournit des informations générales qui peuvent vous aider à déterminer la quantité d’espace disque nécessaire pour les opérations DDL (Index Data Definition Language).

Opérations d’index qui ne nécessitent pas d’espace disque supplémentaire

Les opérations d'index suivantes ne nécessitent pas d'espace disque supplémentaire :

  • ALTER INDEX REORGANIZE; toutefois, l’espace de journalisation est requis.

  • DROP INDEX lorsque vous supprimez un index non clusterisé.

  • DROP INDEX lorsque vous supprimez un index cluster hors connexion sans spécifier la MOVE TO clause et les index non cluster n’existent pas.

  • CREATE TABLE (PRIMARY KEY ou UNIQUE contraintes)

Opérations d’index nécessitant un espace disque supplémentaire

Toutes les autres opérations DDL d'index nécessitent de l'espace disque temporaire supplémentaire lors de l'exécution de l'opération ainsi que de l'espace disque permanent pour stocker la ou les nouvelles structures d'index.

Lorsqu'une nouvelle structure d'index est créée, de l'espace disque est nécessaire pour l'ancienne structure (source) et la nouvelle (cible) dans les fichiers et groupes de fichiers appropriés. L’ancienne structure n’est pas libérée tant que la transaction de création d’index n’a pas été validée.

Les opérations DDL d'index suivantes créent de nouvelles structures d'index et nécessitent de l'espace disque supplémentaire :

  • CREATE INDEX
  • CREATE INDEX WITH DROP_EXISTING
  • ALTER INDEX REBUILD
  • ALTER TABLE ADD CONSTRAINT (PRIMARY KEY ou UNIQUE)
  • ALTER TABLE DROP CONSTRAINT (PRIMARY KEY ou UNIQUE) lorsque la contrainte est basée sur un index cluster
  • DROP INDEX MOVE TO (S’applique uniquement aux index cluster.)

Espace disque temporaire pour le tri

Outre l’espace disque requis pour les structures source et cible, l’espace disque temporaire est requis pour le tri, sauf si l’optimiseur de requête trouve un plan d’exécution qui ne nécessite pas de tri.

En cas de tri, celui-ci s'applique à un nouvel index à la fois. Par exemple, lorsque vous reconstruisez un index cluster et des index non-cluster associés dans une seule instruction, les index sont triés un après l'autre. La quantité d'espace disque temporaire supplémentaire nécessaire pour le tri doit par conséquent correspondre à l'index le plus volumineux traité. Il s'agit généralement de l'index cluster.

Si l’option SORT_IN_TEMPDB est définie sur ON, l'index le plus grand doit tenir dans tempdb. Bien que cette option augmente la quantité d’espace disque temporaire utilisé pour créer un index, elle peut réduire le temps nécessaire pour créer un index lorsqu’il tempdb se trouve sur un ensemble de disques différent de la base de données utilisateur.

S’il SORT_IN_TEMPDB est défini OFF sur (valeur par défaut) chaque index, y compris les index partitionnés, est trié dans son espace disque de destination ; et seul l’espace disque des nouvelles structures d’index est nécessaire.

Pour obtenir un exemple de calcul de l’espace disque, consultez l’exemple d’espace disque d’index.

Espace disque temporaire pour les opérations d’index en ligne

L'exécution d'opérations d'index en ligne nécessite de l'espace disque temporaire supplémentaire.

Lors de la création, reconstruction ou suppression d'un index cluster, un index non-cluster temporaire est créé pour mapper les anciens signets sur les nouveaux. Si l’option SORT_IN_TEMPDB est définie sur ON, cet index temporaire est créé dans tempdb. Si SORT_IN_TEMPDB est défini sur OFF, le même groupe de fichiers ou le même schéma de partition que l’index cible est utilisé. L'index de mappage temporaire contient un enregistrement pour chaque ligne de la table et son contenu constitue un lien entre les anciennes et les nouvelles colonnes à signets, y compris les indicateurs d'unicité et les identificateurs d'enregistrement ; il ne comprend qu'une seule copie de chaque colonne utilisée dans les deux signets. Pour plus d’informations sur les opérations d’index en ligne, consultez Effectuer des opérations d’index en ligne.

Remarque

L’option SORT_IN_TEMPDB ne peut pas être définie pour DROP INDEX instructions. L'index de mappage temporaire est toujours créé dans le même groupe de fichiers ou schéma de partition que l'index cible.

Les opérations d'index en ligne utilisent le contrôle de version de ligne pour isoler l'opération d'index des effets des modifications d'autres transactions. Ceci permet d'éviter de demander des verrous partagés sur des lignes qui ont été lues. Les opérations de mise à jour et de suppression simultanées de l’utilisateur pendant les opérations d’index en ligne nécessitent un espace pour les enregistrements de version dans tempdb. Pour plus d’informations, consultez Effectuer des opérations d’index en ligne .