Redimensionar banco de dados temporário (quando TEMPDB não diminui)

Redimensionar banco de dados temporário (quando TEMPDB não diminui)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Ocasionalmente, devemos redimensionar ou realinhar nosso arquivo de log Tempdb (.ldf) ou arquivos de dados (.mdf ou .ndf) devido a um evento de crescimento que força o tamanho do arquivo fora do normal. Para redimensionar, temos três opções, reinicie o serviço SQL Server, adicione outros arquivos ou reduza o arquivo atual. Provavelmente, todos nós já nos deparamos com arquivos de log de fuga e em uma situação de emergência, reiniciar o SQL Services pode não ser uma opção, mas ainda precisamos diminuir o tamanho do arquivo de log antes de ficarmos sem espaço em disco, por exemplo. O processo de reduzir esse arquivo pode ser complicado, por isso criei este fluxograma para ajudá-lo se você entrar nessa situação.

Agora é muito importante observar que muitos desses comandos limparão o cache e terão um grande impacto no desempenho do servidor, pois ele aquece o backup do cache. Além disso, você não deve reduzir os dados do banco de dados ou o arquivo de log, a menos que seja absolutamente necessário. Mas, ao fazer isso, pode resultar em um tempdb corrompido.

Vamos examinar isso e explicar algumas coisas à medida que avançamos.

Redimensionar banco de dados temporário (quando TEMPDB não diminui) 2

A primeira coisa que você deve fazer é emitir um Checkpoint. UMA posto de controle marca o registro como um ponto de referência “bom até aqui”. Ele permite que o Mecanismo de Banco de Dados do SQL Server saiba que pode começar a aplicar as alterações contidas no log durante a recuperação após esse ponto, se ocorrer um desligamento ou travamento inesperado. Qualquer coisa antes do ponto de verificação é o que eu gosto de chamar de “Endurecido”. Isso significa que todas as páginas sujas na memória foram gravadas no disco, especificamente nos arquivos .mdf e .ndf. Portanto, é importante deixar essa marca no log antes de continuar. Agora, sabemos que o tempdb não é recuperado durante uma reinicialização, ele é recriado, no entanto, isso ainda é um requisito.

USE TEMPDB;  
GO  
CHECKPOINT;

Em seguida, tentamos reduzir o log emitindo um DBCC SHRINKFILE comando. Esta é a etapa que libera o espaço não alocado do arquivo de banco de dados se houver algum espaço não alocado disponível. Você notará o Encolher? bloco de decisão no diagrama após esta etapa. É possível que não haja espaço não alocado e você precisará avançar mais ao longo do caminho para liberar um pouco e tentar novamente.

USE TEMPDB;  
GO 
DBCC SHRINKFILE (templog, 1000);   --Shrinks it to 1GB

Se o banco de dados diminuir, parabéns, mas para alguns de nós ainda podemos ter trabalho a fazer. O próximo passo é tentar liberar algum desse espaço alocado executando DBCC DROPCLEANBUFFERS e DBCC FREEPROCCACHE.

Leia Também  A visão geral e exemplos do comando PARSEONLY SQL

DBCC DROPCLEANBUFFERS – Limpa os buffers limpos do conjunto de buffers e do conjunto de objetos columnstore. Isso vai liberar índices em cache e páginas de dados.

DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS;

DBCC FREEPROCCACHE – Limpa o cache de procedimento, provavelmente você está familiarizado como uma ferramenta de ajuste de desempenho em desenvolvimento. Ele limpará todos os seus planos de execução do cache, o que pode liberar algum espaço no tempdb. Porém, como sabemos, isso criará um desempenho, pois seus planos de execução agora precisam voltar ao cache na próxima execução e não terão o benefício da reutilização do plano. Agora não está muito claro por que isso funciona, então perguntei à especialista em tempdb Pam Lahoud (B |T) para esclarecimento de por que isso tem algo a ver com tempdb. Ambos estamos mergulhando nisso para entender exatamente por que isso funciona. Acredito que esteja relacionado ao Tempdb usando objetos em cache e objetos de memória associados a procedimentos armazenados que podem ter travas e travas que precisam ser liberadas ao executar isso. Volte para mais esclarecimentos, irei atualizá-lo à medida que descobrir mais.

DBCC FREEPROCCACHE WITH NO_INFOMSGS;

Uma vez que esses dois comandos tenham sido executados e você tenha tentado liberar algum espaço, você pode agora tentar o DBCC SHRINKFILE comando novamente. Para a maioria, isso deve tornar o encolhimento possível e você estará pronto para ir. Infelizmente, mais alguns de nós talvez precisem dar mais alguns passos para chegar a esse ponto.

As duas últimas coisas que faço quando não tenho outra escolha para diminuir meu arquivo de log é executar os dois últimos comandos no processo. Isso deve fazer o truque e fazer o log encolher.

Leia Também  Como aprender SQL Server em um ano

DBCC FREESESSIONCACHE– Este comando irá liberar qualquer cache de conexão de consulta distribuída, significando consultas entre dois ou mais servidores.

DBCC FREESESSIONCACHE WITH NO_INFOMSGS;

DBCC FREESYSTEMCACHE – Este comando irá libere todas as entradas de cache restantes não utilizadas de todos os armazenamentos de cache, incluindo cache de tabela temporária. Isso abrange qualquer tabela temporária ou variáveis ​​de tabela restantes no cache que precisam ser liberadas.

DBCC FREESYSTEMCACHE ('ALL');

Nos meus primeiros dias como administrador de banco de dados, eu adoraria ter esse diagrama. Ter alguns passos rápidos durante situações estressantes, como o arquivo de log do tempdb enchendo-me, teria sido uma grande ajuda. Então, espero que alguém ache isso útil e seja capaz de usá-lo para tirar um pouco do estresse.

Redimensionar banco de dados temporário (quando TEMPDB não diminui) 3

Sobre Monica Rathbun

Consultor da Denny Cherry & Associates Consulting que mora na Virgínia. Ela é Microsoft Certified Solutions Expert, Microsoft MVP para Data Platform e VMWare vExpert. Ela tem mais de 15 anos de experiência trabalhando com uma ampla variedade de plataformas de banco de dados com foco em SQL Server. Ela é palestrante frequente em conferências do setor de TI sobre tópicos como ajuste de desempenho e gerenciamento de configuração. Ela é líder do grupo de usuários do SQL Server Hampton Roads e mentora regional do Mid-Atlantic PASS. Ela é apaixonada pelo SQL Server e pela comunidade do SQL Server, fazendo tudo o que pode para retribuir. Monica sempre pode ser encontrada no Twitter (@sqlespresso) dando dicas úteis.



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br