Espace disque nécessaire pour les opérations DDL sur les index
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
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. Cette rubrique propose des informations générales qui peuvent vous aider à déterminer la quantité d'espace disque nécessaire pour les opérations DDL d'index.
Opérations d'index ne nécessitant pas d'espace disque supplémentaire
Les opérations d'index suivantes ne nécessitent pas d'espace disque supplémentaire :
ALTER INDEX REORGANIZE ; un espace journal est toutefois nécessaire.
DROP INDEX lors de la suppression d'un index non-cluster.
DROP INDEX lors de la suppression d'un index cluster hors ligne sans spécifier la clause MOVE TO et qu'il n'existe pas d'index non-cluster.
CREATE TABLE (contraintes PRIMARY KEY ou UNIQUE)
Opérations d'index nécessitant de l'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 désallouée aussi longtemps que la transaction de création d'index n'est pas 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 (concerne uniquement les index cluster)
Espace disque temporaire à des fins de tri
Outre l'espace disque nécessaire pour les structures source et cible, de l'espace disque temporaire est nécessaire à des fins de tri, à moins que l'optimiseur de requête trouve un plan d'exécution ne nécessitant 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 a la valeur ON, l’index le plus volumineux doit tenir dans tempdb. Bien que cette option augmente la quantité d’espace disque temporaire utilisée pour créer un index, elle peut réduire le temps nécessaire pour créer un index quand tempdb ne se trouve pas sur le même ensemble de disques que la base de données utilisateur.
Si l'option SORT_IN_TEMPDB est définie sur OFF (par défaut) chaque index, y compris les index partitionnés, est stocké sur l'espace disque de destination et de l'espace disque n'est nécessaire que pour les nouvelles structures d'index.
Pour obtenir un exemple de calcul de l’espace disque, consultez Exemple d’espace disque d’un 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 a la valeur ON, cet index temporaire est créé dans tempdb. En revanche, si elle est définie sur OFF, le même groupe de fichiers ou 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 en ligne sur les index, consultez Exécuter des opérations en ligne sur les index.
Remarque
L'option SORT_IN_TEMPDB ne peut pas être définie pour les instructions DROP INDEX. 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 simultanées de suppression et de mise à jour d’utilisateur lors d’opérations d’index en ligne nécessitent de l’espace pour les enregistrements de version dans tempdb. Pour plus d'informations, consultez Perform Index Operations Online.
Tâches associées
Exemple d'espace disque d'un index
Espace disque du journal des transactions pour les opérations d’index
Estimer la taille d'un index cluster
Estimer la taille d'un index non-cluster
Estimer la taille d’un segment de mémoire