O tempdb de um servidor (SQL Server 2008) aumenta para mais de 500 GB várias vezes por mês. É possível descobrir quais instruções SQL causaram esse problema? O problema geralmente não é causado por create table #temp...; insert into #temp...
ou , select ... into #temp...
mas por junções complexas.
O tamanho inicial de alguns dos arquivos tempdb também é definido automaticamente para valores muito maiores todas as vezes. Como prevenir?
Às vezes, os planos em cache impedem o redimensionamento/encolhimento dos arquivos. Como descobrir qual deles contém o tempdb?
Existem três DMVs que você pode usar para rastrear o uso do tempdb:
Os dois primeiros permitirão que você acompanhe as alocações em nível de consulta e sessão. O terceiro rastreia as alocações no armazenamento de versão, usuário e objetos internos.
A consulta de exemplo a seguir fornecerá alocações por sessão:
Se você deseja rastrear o uso durante um período de tempo, considere coletar dados com sp_whoisactive , conforme demonstrado por Kendra Little .
Pode haver várias fontes de um problema:
SORT_IN_TEMPDB = ON
Estou usando o Query Store
Selecione a Métrica como "Temp DB Memory Used (KB)" e a Estatística como "Max".
Então encontrei o garoto que matou meu TempDB.
atualização : verifiquei o recurso de armazenamento de consultas, ele não está disponível para o SQL Server 2008.