Tempo aproximado para leitura: 00:02:41 min
Dúvida
Quais avaliações podem ser realizadas, durante um cenário de alto consumo de espaço em disco pelo Banco de Dados e consequentemente reduzir o tamanho?
Ambiente
Framework - Framework (Linha RM) - Banco de Dados - Todas as versões
Solução
Para solucionar este item verifique os passos indicados abaixo:
-
Arquivo de log
O arquivo de log pode estar consumindo um espaço considerável, devido ao método de recuperação utilizado Recovery Model, que pode estar definido como full completo.
Solicite ao DBA ou responsável pelo Banco de Dados, que avalie o motivo dessa definição e caso possível altere Recovery Model o para Simple simples e em seguida execute o seguinte procedimento:
Framework - Framework RM - BD - SQL Server - SHRINK
-
Limpeza das tabelas de log de execução de processos
Deverá ser realizada a limpeza periódica das tabelas GJOBX, GJOBXEXECUCAO, GJOBLOG, dentre outras, para melhorar a performance dos processos do sistema.
Framework - Framework RM - BD - Como realizar a Limpeza de tabelas de log, execução e processos
-
Consulta SQL exemplo
Recomendo que utilize da consulta SQL abaixo para identificar as tabelas com maior consumo. Consequentemente possibilitando, o contado o suporte do aplicativo correspondente a tabela e verificação das possibilidades de limpeza dos objetos ofensores.
Exemplo: Se apresentado a tabela PLOGCALCTEXTO e a PLOGCALCULO será necessário um contato com o suporte do RM Labore, QCUBODATA com o suporte de BI e Integrações, CPARTIDA com o suporte do RM Saldus, dentro outros. O suporte do aplicativo poderá indicar os procedimentos de limpeza correspondentes e os impactos na regra de negócios do sistema.As tabelas que iniciam com TOTVSAUDIT.Nome_Da_Tabela poderá ver no resultado da consulta na coluna NomeSchema, podem ser realizados o expurgo conforme sua necessidade sem problemas, estas tabelas são do log de auditoria, segue link para auxiliar na limpeza das tabelas do log de auditoria:
SELECT
t.NAME AS Entidade,
p.rows AS Registros,
SUM(a.total_pages) * 8 AS EspacoTotalKB,
SUM(a.used_pages) * 8 AS EspacoUsadoKB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS EspacoNaoUsadoKB,
s.name as NomeSchema
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, s.Name, p.Rows
ORDER BY
EspacoTotalKB DESC
-
SHRINKFILE
Após a execução dos expurgos correspondentes, o SQL fará apenas a liberação lógica, ou seja, o espaço dentro do arquivo estará disponível para a gravação de mais dados. Para a efetiva liberação de espaço, utilize os comandos DBCC SHRINKFILE ou DBCC SHRINKDATABASE. Para mais detalhes acesse:
Reduzir o tamanho dos arquivos do banco de dados
DBCC SHRINKDATABASE
Importante
Favor realizar o procedimento acima em ambiente/base de teste e somente após avaliar os resultados aplicar em produção.
Existem outros cenários que podem caracterizar um alto consumo de espaço em disco pelo Banco de Dados, como recursos específicos do SQL Server, exemplo: Snapshot e Auditoria. Nesse caso, recomendo que entre em contato com o DBA responsável.
0 Comentários