Tailles des fichiers fragmentés dans les captures instantanées de bases de données
Une capture instantanée de base de données utilise un ou plusieurs fichiers fragmentés pour stocker les données. Pendant la création d'une capture instantanée de base de données, ces fichiers fragmentés sont créés et nommés par l'instruction CREATE DATABASE. Ces noms de fichiers sont stockés dans sys.master_files dans la colonne physical_name.
Remarque : |
---|
Dans sys.database_files (dans la base de données source ou dans la capture instantanée), la colonne physical_name contient toujours les noms des fichiers de la base de données source. |
Les fichiers fragmentés sont une spécificité du système de fichiers NTFS. Au départ, un fichier fragmenté ne contient pas de données utilisateur et aucun espace disque pour les données utilisateur ne lui a été alloué. Pour des informations générales sur l'utilisation des fichiers fragmentés dans une capture instantanée de base de données et sur le schéma de croissance des captures instantanées de bases de données, consultez Fonctionnement des captures instantanées de base de données.
À sa création, un fichier fragmenté occupe très peu d'espace disque. Ensuite, au fil du temps, des données y sont écrites et le système NFTS lui alloue de l'espace disque progressivement. La taille d'un fichier fragmenté peut donc devenir très importante. Si une capture instantanée de base de données ne dispose plus de suffisamment d'espace, elle est marquée comme suspecte et doit être supprimée. La base de données source, en revanche, n'est pas concernée et toutes les actions sur cette dernière se poursuivent normalement.
La taille d'un fichier fragmenté augmente par incréments de 64 kilo-octets (Ko). Elle est donc toujours un multiple de 64 Ko. Le dernier incrément de 64 Ko contient une à huit pages de 8 Ko, en fonction du nombre de pages qui ont été copiées à partir de la base de données source. Ceci signifie qu'en moyenne, la taille d'un fichier fragmenté dépasse légèrement l'espace réellement occupé par les pages qu'il contient.
- Pour connaître la taille réelle d'un fichier fragmenté
Pour connaître le nombre d'octets réellement utilisés sur le disque par chaque fichier fragmenté d'une capture instantanée de base de données, vous pouvez utiliser la fonction fn_virtualfilestats qui utilise les valeurs de tables système pour retourner le nombre réel d'octets d'un fichier dans la colonne BytesOnDisk. Cette fonction prend database_id et file_id comme valeurs. L'ID de base de données de la capture instantanée et les ID de chaque fichier fragmenté sont affichés dans l'affichage catalogue sys.master_files. Pour plus d'informations, consultez sys.master_files (Transact-SQL) et fn_virtualfilestats (Transact-SQL).
Autre possibilité pour afficher l'espace disque réellement occupé par un fichier fragmenté : cliquez avec le bouton droit sur le fichier dans Microsoft Windows, cliquez sur Propriétés et notez la valeur Taille sur le disque. - Pour connaître la taille maximale d'un fichier fragmenté
La taille maximale d'un fichier fragmenté correspond à la taille du fichier de la base de données source au moment de la création de la capture instantanée. Pour connaître la taille de ce fichier, utilisez une des méthodes suivantes :- Utilisez les commandes dir de Windows.
- Sélectionnez le fichier fragmenté, ouvrez la boîte de dialogue Propriétés dans Windows et relevez la valeur du champ Taille.
- Sélectionnez la colonne size soit dans sys.database_files dans la capture instantanée de la base de données, soit dans sys.master_files. La colonne size dans l'affichage catalogue sys.database_files ou sys.master_files reflète l'espace maximal que la capture instantanée peut utiliser. Cette valeur correspond à celle de la valeur au champ Taille de Windows, à la différence qu'elle est exprimée en termes de pages SQL, la taille en octets étant :
( number_of_pages * 8192)
Voir aussi
Concepts
Captures instantanées de base de données
Fonctionnement des captures instantanées de base de données
Autres ressources
fn_virtualfilestats (Transact-SQL)
sys.database_files (Transact-SQL)
sys.master_files (Transact-SQL)