Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez utiliser les étapes suivantes pour estimer la quantité d’espace nécessaire pour stocker des données dans un index cluster :
Calculez l’espace utilisé pour stocker les données au niveau feuille de l’index cluster.
Calculez l’espace utilisé pour stocker les informations d’index pour l’index cluster.
Total des valeurs calculées.
Étape 1. Calculer l’espace utilisé pour stocker les données dans le niveau feuille
Spécifiez le nombre de lignes qui seront présentes dans le tableau :
Num_Rows = nombre de lignes dans la table
Spécifiez le nombre de colonnes de longueur fixe et de longueur variable et calculez l’espace requis pour leur stockage :
Calculez l’espace occupé par chacun de ces groupes de colonnes dans la ligne de données. La taille d’une colonne dépend du type de données et de la spécification de longueur.
Num_Cols = nombre total de colonnes (longueur fixe et longueur variable)
Fixed_Data_Size = taille totale d’octets de toutes les colonnes de longueur fixe
Num_Variable_Cols = nombre de colonnes de longueur variable
Max_Var_Size = taille maximale d’octets de toutes les colonnes de longueur variable
Si l'index de cluster n'est pas unique, prenez en compte la colonne uniquificateur :
Le uniqueifieur est une colonne nullable et de longueur variable. Ce sera non nul et d'une taille de 4 octets dans les lignes ayant des valeurs de clé nonunique. Cette valeur fait partie de la clé d’index et est nécessaire pour vous assurer que chaque ligne a une valeur de clé unique.
= Num_ColsNum_Cols + 1
= Num_Variable_ColsNum_Variable_Cols + 1
= Max_Var_Size + 4
Ces modifications supposent que toutes les valeurs ne seront pas uniques.
Une partie de la ligne, appelée bitmap de nullité, est réservée pour gérer la nullabilité des colonnes. Calculez sa taille :
Null_Bitmap = 2 + ((Num_Cols + 7) / 8)
Seule la partie entière de l’expression précédente doit être utilisée ; ignorer tout reste.
Calculez la taille des données de longueur variable :
S’il existe des colonnes de longueur variable dans la table, déterminez la quantité d’espace utilisée pour stocker les colonnes dans la ligne :
Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size
Les octets ajoutés à Max_Var_Size sont destinés au suivi de chaque colonne variable. Cette formule suppose que toutes les colonnes de longueur variable sont pleines de 100 %. Si vous prévoyez qu’un pourcentage plus petit de l’espace de stockage de colonnes de longueur variable sera utilisé, vous pouvez ajuster la valeur Max_Var_Size par ce pourcentage pour obtenir une estimation plus précise de la taille globale de la table.
Remarque
Vous pouvez combiner
varchar,nvarcharouvarbinarysql_variantdes colonnes qui entraînent une largeur de table définie totale supérieure à 8 060 octets. La longueur de chacune de ces colonnes doit toujours être comprise dans la limite de 8 000 octets pour unevarcharcolonne,varbinaryousql_variantune colonne, et 4 000 octets pournvarcharles colonnes. Toutefois, leurs largeurs combinées peuvent dépasser la limite de 8 060 octets dans une table.S’il n’existe aucune colonne de longueur variable, définissez Variable_Data_Size sur 0.
Calculez la taille totale des lignes :
= Row_Size + Fixed_Data_Size + Variable_Data_SizeNull_Bitmap + 4
La valeur 4 est la surcharge d’en-tête de ligne d’une ligne de données.
Calculez le nombre de lignes par page (8096 octets gratuits par page) :
Rows_Per_Page = 8096 / (Row_Size + 2)
Étant donné que les lignes ne s’étendent pas sur les pages, le nombre de lignes par page doit être arrondi à la ligne entière la plus proche. La valeur 2 dans la formule correspond à l’entrée de la ligne dans le tableau d’emplacements de la page.
Calculez le nombre de lignes libres réservées par page, en fonction du facteur de remplissage spécifié :
Free_Rows_Per_Page = 8096 x ((100 - Fill_Factor) / 100) / (Row_Size + 2)
Le facteur de remplissage utilisé dans le calcul est une valeur entière au lieu d’un pourcentage. Étant donné que les lignes ne s’étendent pas sur les pages, le nombre de lignes par page doit être arrondi à la ligne entière la plus proche. À mesure que le facteur de remplissage augmente, plus de données seront stockées sur chaque page et il y aura moins de pages. La valeur 2 dans la formule correspond à l’entrée de la ligne dans le tableau d’emplacements de la page.
Calculez le nombre de pages requises pour stocker toutes les lignes :
Num_Leaf_Pages = Num_Rows / (Rows_Per_Page - Free_Rows_Per_Page)
Le nombre de pages estimées doit être arrondi à la page entière la plus proche.
Calculez la quantité d’espace nécessaire pour stocker les données au niveau feuille (8192 octets totaux par page) :
Leaf_space_used = 8192 x Num_Leaf_Pages
Étape 2. Calculer l’espace utilisé pour stocker les informations d’index
Vous pouvez utiliser les étapes suivantes pour estimer la quantité d’espace nécessaire pour stocker les niveaux supérieurs de l’index :
Spécifiez le nombre de colonnes de longueur fixe et de longueur variable dans la clé d’index et calculez l’espace nécessaire pour leur stockage :
Les colonnes clés d’un index peuvent inclure des colonnes de longueur fixe et de longueur variable. Pour estimer la taille de ligne d’index de niveau intérieur, calculez l’espace occupé par chacun de ces groupes de colonnes dans la ligne d’index. La taille d’une colonne dépend du type de données et de la spécification de longueur.
Num_Key_Cols = nombre total de colonnes clés (longueur fixe et longueur variable)
Fixed_Key_Size = taille totale d’octets de toutes les colonnes clés de longueur fixe
Num_Variable_Key_Cols = nombre de colonnes clés de longueur variable
Max_Var_Key_Size = taille maximale d’octets de toutes les colonnes clés de longueur variable
Tenez compte de tout identificateur unique nécessaire si l'index n'est pas unique :
Le uniqueifieur est une colonne nullable et de longueur variable. Il s'agit d'une valeur non nulle et mesurera 4 octets dans les lignes où les valeurs de la clé d'index ne sont pas uniques. Cette valeur fait partie de la clé d’index et est nécessaire pour vous assurer que chaque ligne a une valeur de clé unique.
= Num_Key_ColsNum_Key_Cols + 1
Num_Variable_Key_Cols = Num_Variable_Key_Cols + 1
= Max_Var_Key_SizeMax_Var_Key_Size + 4
Ces modifications supposent que toutes les valeurs ne seront pas uniques.
Calculez la taille bitmap Null :
S’il existe des colonnes nullables dans la clé d’index, une partie de la ligne d’index est réservée à la bitmap Null. Calculez sa taille :
Index_Null_Bitmap = 2 + ((nombre de colonnes dans la ligne d’index + 7) / 8)
Seule la partie entière de l’expression précédente doit être utilisée. Jetez tout reste.
S’il n’existe aucune colonne clé nullable, définissez Index_Null_Bitmap sur 0.
Calculez la taille des données de longueur variable :
S’il existe des colonnes de longueur variable dans l’index, déterminez la quantité d’espace utilisée pour stocker les colonnes dans la ligne d’index :
Variable_Key_Size = 2 + (Num_Variable_Key_Cols x 2) + Max_Var_Key_Size
Les octets ajoutés à Max_Var_Key_Size sont destinés au suivi de chaque colonne de longueur variable. Cette formule suppose que toutes les colonnes de longueur variable sont pleines de 100 %. Si vous prévoyez qu’un pourcentage plus petit de l’espace de stockage de colonne de longueur variable sera utilisé, vous pouvez ajuster la valeur Max_Var_Key_Size par ce pourcentage pour obtenir une estimation plus précise de la taille globale de la table.
S’il n’existe aucune colonne de longueur variable, définissez Variable_Key_Size sur 0.
Calculez la taille de ligne d’index :
Index_Row_Size = Fixed_Key_Size + Variable_Key_Size + Index_Null_Bitmap + 1 (pour la surcharge de l'en-tête de ligne d'une ligne d'index) + 6 (pour le pointeur de l'ID de la page enfant)
Calculez le nombre de lignes d’index par page (8096 octets gratuits par page) :
Index_Rows_Per_Page = 8096 / (Index_Row_Size + 2)
Étant donné que les lignes d’index ne s’étendent pas sur les pages, le nombre de lignes d’index par page doit être arrondi à la ligne entière la plus proche. Le 2 dans la formule correspond à l’entrée de la ligne dans le tableau d’emplacements de la page.
Calculez le nombre de niveaux dans l’index :
Non-leaf_Levels = 1 + logarithme (Index_Rows_Per_Page * Num_Leaf_Pages / )Index_Rows_Per_Page
Arrondissez cette valeur jusqu’au nombre entier le plus proche. Cette valeur n’inclut pas le niveau feuille de l’index clusterisé.
Calculez le nombre de pages non-feuilles dans l’index :
Num_Index_Pages = ∑niveau (Num_Leaf_Pages / (Index_Rows_Per_Page))
où 1 <= Niveau <= Niveaux_non-feuilles
Arrondissez chaque addition jusqu’au nombre entier le plus proche. En guise d’exemple simple, considérez un index où Num_Leaf_Pages = 1000 et Index_Rows_Per_Page = 25. Le premier niveau d’index au-dessus du niveau feuille stocke 1 000 lignes d’index, qui sont une ligne d’index par page feuille, et 25 lignes d’index peuvent tenir par page. Cela signifie que 40 pages sont requises pour stocker ces 1 000 lignes d’index. Le niveau suivant de l’index doit stocker 40 lignes. Cela signifie qu’il nécessite 2 pages. Le niveau final de l’index doit stocker 2 lignes. Cela signifie qu’il nécessite 1 page. Cela donne 43 pages d’index non feuille. Lorsque ces nombres sont utilisés dans les formules précédentes, le résultat est le suivant :
Non-leaf_Levels = 1 + log25 (1000 / 25) = 3
Num_Index_Pages = 1000/(253)+ 1000/(25 2) + 1000/(251) = 1 + 2 + 40 = 43, qui est le nombre de pages décrites dans l’exemple.
Calculez la taille de l’index (8192 octets totaux par page) :
Index_Space_Used = 8192 x Num_Index_Pages
Étape 3. Total des valeurs calculées
Total des valeurs obtenues à partir des deux étapes précédentes :
Taille de l'index cluster (octets) = Leaf_Space_Used + Index_Space_used
Ce calcul ne tient pas compte des éléments suivants :
Partitionnement
La surcharge d’espace du partitionnement est minimale, mais complexe à calculer. Il n'est pas nécessaire d'inclure.
Pages d’allocation
Il existe au moins une page IAM utilisée pour suivre les pages allouées à un tas, mais la surcharge d’espace est minimale et il n’existe aucun algorithme pour calculer exactement le nombre de pages IAM utilisées.
Valeurs de l’objet large (LOB)
L'algorithme pour déterminer exactement la quantité d'espace qui sera utilisée pour stocker les types de données
varchar(max),varbinary(max),nvarchar(max),text,ntext,xml, et les valeursimageest complexe. Il suffit d’ajouter la taille moyenne des objets volumineux attendus, de multiplier par Num_Rows et d’ajouter cela à la taille totale de l’index de cluster.Compression
Vous ne pouvez pas précalculer la taille d’un index compressé.
Colonnes éparses
Pour plus d’informations sur les besoins en espace des colonnes éparses, consultez Utiliser des colonnes éparses.
Voir aussi
Description des index cluster et non cluster
Estimer la taille d’une table
Créer des index cluster
Créer des index non cluster
Estimer la taille d'un index non-cluster
Estimer la taille d'un tas
Estimer la taille d'une base de données