Mon instance de base de données Amazon RDS, exécutée sur le moteur SQL Server, utilise plus d'espace que prévu. Quelle est la cause de ce phénomène et que faire pour optimiser l'utilisation de l'espace de stockage du disque alloué à mon instance DB RDS SQL Server ?

Même si la métrique 'FreeStorageSpace' d'Amazon CloudWatch permet de contrôler l'espace de stockage disponible d'une instance DB RDS données, celle-ci ne décrit pas la façon dont le moteur SQL Server utilise cet espace.

Remarque
Pour de plus amples informations sur l'utilisation réelle de l'espace de stockage du disque physique d'une instance de base de données SQL Server, exécutez la requête suivante :
     SELECT D.name AS [database_name]
           , F.name AS [file_name]
           , F.type_desc AS [file_type]
           , CONVERT(decimal(10,2), F.size * 0.0078125) As [size_on_disk_mb]
           , CONVERT(decimal(10,2), F.max_size * 0.0078125) AS [max_size_mb]
     FROM sys.master_files AS F
     INNER JOIN sys.databases AS D
           ON F.database_id = D.database_id;

Les fichiers qui portent la mention ROWS contiennent des données, tandis que ceux qui portent la mention LOGS représentent des transactions en cours d'exécution.

Pour optimiser l'utilisation de l'espace de stockage disponible, il est intéressant de pouvoir déterminer la façon dont le moteur SQL Server utilise cet espace. Les catégories suivantes définissent, dans les grandes lignes, le type de fichier utilisant l'espace de stockage du moteur SQL Server :

  • Fichiers de base de données
    L'espace de stockage total utilisé par une base de données individuelle se divise en ligne, index et espace libre dans la base de données active (par exemple, USE [my_database];) avec la requête suivante :
         EXEC sp_spaceused;
  • Fichiers journaux des transactions
    Pour déterminer la quantité d'espace de stockage utilisée par les journaux de transactions, exécutez la requête suivante :
         DBCC SQLPERF(LOGSPACE);
    Les journaux de transactions doivent contenir de l'espace libre. Toutefois, si celui-ci est excessif, utilisez la requête ci-dessous pour en libérer une partie :
         USE [mydatabasename];
         DECLARE @minmb int;
         DECLARE @logfile nvarchar(255);
         SET @minmb = 5;
         SET @logfile = (SELECT name FROM sys.master_files WHERE type = 1 AND database_id = db_id());
         DBCC SHRINKFILE(@logfile, @minmb);
    Pour limiter l'allocation excessive d'espace libre dans les journaux de transactions, utilisez les options de fichiers et de groupes de fichiers ALTER DATABASE (Transact-SQL) pour configurer correctement les paramètres d'augmentation automatique de la base de données utilisateur en question.
  • Base de données temporaire (tempdb)
    La base de données temporaire tempdb de SQL Server augmente automatiquement jusqu'à sa recréation, au redémarrage de l'instance DB. Si elle utilise une grande partie de l'espace de stockage disponible, définissez une période de maintenance pendant laquelle vous pourrez arrêter et redémarrer l'instance DB.
  • Index de base de données
    Lorsqu'une portion significative de l'espace de stockage disponible est dédiée aux index, vous pouvez les régler afin de conserver un peu d'espace. Quelle que soit la stratégie de réglage que vous choisissez, exécutez la vue de gestion dynamique sys.dm_db_index_usage_stats (Transact-SQL) pour obtenir des informations détaillées sur l'utilisation des index. Ces dernières vous seront utiles pour définir vos priorités, notamment pour déterminer si les gains de stockage qui découlent de la suppression d'un index compensent la perte de performances liée à l'absence de cet index.

Amazon RDS, stockage, DBCC SHRINKFILE, FreeStorageSpace, espace de stockage excessif, tempdb, journal des transactions, réglage d'index


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support.