Como faço para otimizar o consumo de armazenamento na minha instância de banco de dados do Amazon RDS para SQL Server?

7 minuto de leitura
0

Minha instância de banco de dados do Amazon Relational Database Service (Amazon RDS) para Microsoft SQL Server usa mais espaço do que o esperado. Quero otimizar meu armazenamento em disco.

Breve descrição

Você pode usar a métrica FreeStorageSpace no Amazon CloudWatch para monitorar o espaço de armazenamento disponível para uma instância de banco de dados. A métrica FreeStorageSpace não descreve como o mecanismo do SQL Server utiliza o armazenamento disponível. Monitore essa métrica com frequência e ative o escalonamento automático de armazenamento para garantir que você não fique sem armazenamento.

Resolução

Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

A instância do Amazon RDS para SQL Server está no estado Armazenamento cheio

Não é possível realizar operações básicas quando sua instância do Amazon RDS está presa no estado Armazenamento cheio. Para mais informações, consulte Como resolver problemas que ocorrem quando instâncias de banco de dados do Amazon RDS esgotam o armazenamento?

Algumas instâncias de banco de dados do RDS para SQL Server têm limitações sobre como é possível modificar o armazenamento. Se sua instância de banco de dados não estiver qualificada para modificação, a opção Armazenamento alocado no console do Amazon RDS será desativada. Para escalar o armazenamento em uma instância quando a opção de modificação não estiver disponível, use o backup nativo e restaure para migrar seus dados para uma nova instância. Certifique-se de que a nova instância tenha entrada/saída por segundo (IOPS) provisionada ou tenha o tipo de armazenamento de uso geral (SSD). Ou use uma ferramenta de migração de dados para migrar para a nova instância. Para obter mais informações, consulte Modificar uma instância de banco de dados do Amazon RDS.

Para ver as opções de armazenamento válidas para sua instância de banco de dados, execute o comando describe-valid-db-instance-modifications:

describe-valid-db-instance-modifications

Observação: o armazenamento de escala e o ajuste de escala automático do armazenamento não são compatíveis no RDS para instâncias do SQL Server que usam armazenamento magnético.

Para instâncias que têm o ajuste de escala automático do armazenamento ativado, é possível estender o armazenamento somente em determinados cenários. Para mais informações, consulte Gerenciar a capacidade automaticamente com o dimensionamento automático de armazenamento do Amazon RDS. Além disso, você só pode estender o armazenamento quando o limite máximo de armazenamento não for igual ou superior ao incremento de armazenamento. Para obter mais informações, consulte Limitações.

Consumo de armazenamento para instâncias do RDS para SQL Server

Para obter informações sobre o uso do espaço físico em disco para a sua instância de banco de dados do RDS para SQL Server, execute uma consulta semelhante ao seguinte exemplo:

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;

Os arquivos que contêm ROWS incluem dados, e os arquivos que contêm LOGS representam transações em andamento.

Para obter mais informações, consulte sys.master_files (Transact-SQL) no site da Microsoft.

**Observação:**a exibição do sistema sys.master_files mostra o tamanho de inicialização do tempdb. Ela não reflete o tamanho atual de tempdb.

Para verificar o tamanho atual de tempdb, execute a consulta a seguir:

select name AS [database_name], physical_name AS [file_name],
convert(decimal(10,2),size*0.0078125) AS [size_on_disk_mb]
from tempdb.sys.database_files;

Antes de otimizar seu armazenamento, certifique-se de entender como o mecanismo do SQL Server o utiliza. O armazenamento do mecanismo do SQL Server é amplamente definido nas seguintes categorias:

Arquivos de banco de dados

É possível dividir o armazenamento total usado por um banco de dados individual em linha, índice e espaço livre no banco de dados ativo no momento. Para detalhar o armazenamento total, execute a seguinte consulta:

EXEC sp_spaceused;

Arquivos de log de transações

Para determinar a quantidade de armazenamento usada pelos logs de transações, execute a seguinte consulta:

DBCC SQLPERF(LOGSPACE)

Você pode ver espaço livre nos logs de transações. Para desalocar espaço livre excessivo, execute o comando DBCC SHRINKFILE. Para obter mais informações, consulte DBCC SHRINKFILE (Transact-SQL) no site da Microsoft.

Para reduzir a alocação excessiva de espaço livre para logs de transações, use as opções de arquivo e grupo de arquivos ALTER DATABASE (transact-SQL). As opções definem as configurações de crescimento automático do banco de dados. Para obter mais informações, consulte Opções de arquivo e grupo de arquivos ALTER DATABASE (Transact-SQL) no site da Microsoft.

Banco de dados temporário (tempdb)

O tempdb do SQL Server cresce automaticamente. Se o tempdb consome uma grande quantidade de armazenamento disponível, será possível reduzir o banco de dados tempdb.

Observação: se você reduzir um banco de dados tempdb, verifique a guia Mensagem no SQL Server Management Studio (SSMS) para ver as mensagens de erro depois de executar o comando.

Se você receber uma mensagem de erro “DBCC SHRINKFILE: A página não pôde ser movida porque é uma mensagem de erro “página da tabela de trabalho”, então consulte DBCC FREESYSTEMCACHE (Transact-SQL) e DBCC FREEPROCCACHE (Transact-SQL) no site da Microsoft. Você também pode reinicializar a instância de banco de dados para limpar tempdb.

Instâncias de banco de dados em um estado de armazenamento cheio podem falhar na reinicialização. Se isso ocorrer, aumente o armazenamento alocado para sua instância de banco de dados e tente reinicializar novamente. Para mais informações, consulte Como resolver problemas que ocorrem quando instâncias de banco de dados do Amazon RDS esgotam o armazenamento?

Índices de banco de dados

Se você dedicar uma grande parte do armazenamento disponível aos índices, talvez consiga economizar espaço por meio do ajuste do índice. Para obter informações sobre o uso do índice, execute a visualização de gerenciamento dinâmico sys.dm_db_index_usage_stats. Isso pode ajudar você a avaliar as prioridades de ajuste. Para obter mais informações, consulte sys.dm_db_index_usage_stats (Transact-SQL) no site da Microsoft.

Arquivos de rastreamento

Arquivos de rastreamento, incluindo arquivos de Trilha de auditoria C2 e arquivos de despejo, podem consumir grandes quantidades de espaço em disco. O Amazon RDS exclui automaticamente arquivos de rastreamento e despejo com mais de 7 dias, mas você também pode ajustar as configurações de retenção dos seus arquivos de rastreamento. Para mais informações, consulte Definir o período de retenção para arquivos de rastreamento e despejo.

Espaço consumido pela integração com o Amazon S3

Se você integrou sua instância de banco de dados RDS com o Amazon S3, pode ter carregado arquivos no seu drive D: que ocupam espaço. Para verificar quanto espaço é consumido pela sua integração com o S3, execute um comando para listar os arquivos na sua instância de banco de dados. Para mais informações, consulte Listar arquivos na instância de banco de dados do RDS.

CDC

Para bancos de dados que têm o CDC ativado, o tamanho do arquivo de log aumenta com base na frequência das alterações nas tabelas ou bancos de dados de origem. Eventualmente, o armazenamento pode acabar. Se o disco de log ficar cheio, o CDC não poderá processar mais transações.

Auditoria

Se a auditoria não estiver configurada corretamente para uma instância, por exemplo, os logs podem crescer exponencialmente e afetar o armazenamento. Para mais informações, consulte Auditoria do SQL Server.

O modo de auditoria C2 salva uma grande quantidade de informações do evento no arquivo de log. O arquivo de log pode crescer rapidamente e colocar a instância no estado Armazenamento cheio. Para obter mais informações, consulte o modo de auditoria C2 (opção de configuração do servidor) na documentação da Microsoft.

Além disso, se você ativar recursos como o armazenamento de consultas, sua utilização de recursos poderá ser afetada.

Informações relacionadas

Amazon RDS para Microsoft SQL Server

Monitorar métricas em uma instância do Amazon RDS

Instância de banco de dados do Amazon RDS ficando sem espaço de armazenamento

Migrar bancos de dados do Microsoft SQL Server para a Nuvem AWS