Prática recomendada para reduzir o Tempdb em um ambiente de produção

24

Qual é a melhor prática a ser usada ao reduzir o banco de dados temporário no SQL Server 2008?

É arriscado usar o seguinte?

use tempdb
GO

DBCC FREEPROCCACHE -- clean cache
DBCC DROPCLEANBUFFERS -- clean buffers
DBCC FREESYSTEMCACHE ('ALL') -- clean system cache
DBCC FREESESSIONCACHE -- clean session cache
DBCC SHRINKDATABASE(tempdb, 10); -- shrink tempdb
dbcc shrinkfile ('tempdev') -- shrink db file
dbcc shrinkfile ('templog') -- shrink log file
GO

-- report the new file sizes
SELECT name, size
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO
Mcol
fonte
A melhor prática é descobrir o que a está fazendo crescer e abordar isso. Se você reduzi-lo ele só tem a crescer novamente e isso leva tempo e IO
Nick.McDermaid
Sim eu conheço. Mas quando preciso, porque é tarde para ser proativo :) Essa é a melhor solução?
Desculpe, não posso ajudá-lo lá.
Nick.McDermaid

Respostas:

11

É uma prática recomendada monitorar proativamente o uso normal do Tempdb e definir o tamanho adequadamente. Se esse for um caso em que o Tempdb tenha crescido para esse tamanho e seja um env de PROD, eu reiniciaria o SQL Server Services durante a manutenção semanal. Depois, o Tempdb retornaria ao tamanho configurado.

Reduzir o arquivo é bom, desde que o Tempdb não esteja sendo usado; caso contrário, as transações existentes podem ser afetadas do ponto de vista do desempenho devido a bloqueios e bloqueios.

O cache do procedimento de limpeza, os caches de buffer, etc. terão um impacto negativo no desempenho do banco de dados até que eles não sejam recriados. Eu não faria isso no PROD.

Espero que ajude!


fonte
Obrigado pela entrada godd. É suficiente verificar com sp_who os processos no tempdb?
1
Eu não acho que é uma maneira confiável de descobrir se o temp db está sendo usado. Eu acho que só apareceria se alguém estivesse criando uma tabela temporária diretamente no SSMS. Mas se o mesmo estiver sendo feito como resultado de uma operação de consulta devido a perda de memória, etc., ela não aparecerá no sp_who2. Essa questão seria, de fato, um segmento separado. Por favor, crie isso, pois é uma discussão separada. Se a resposta anterior o ajudou, marque-a como resposta. Isso ajudará outras pessoas com situação semelhante.