Eu tenho um banco de dados SQL 2008 de 50 GB (apenas 36 são dados) com um cubo do Analysis Server de 24 GB que é reconstruído todas as noites.
As reconstruções do cubo têm usado cada vez mais TempDB no servidor SQL todas as noites. Ontem à noite, os arquivos de dados TempDB cresceram para cerca de 100 GB antes de usar todo o espaço na unidade TempDB.
Posso adicionar mais espaço, mas me sentiria melhor se entendesse mais sobre o que está acontecendo aqui:
- Como/por que as reconstruções do cubo usam o espaço TempDB no servidor SQL?
- Existe alguma maneira de reduzir a quantidade de TempDB que ele usa ou forçá-lo a "liberar" o tempdb entre as etapas ou algo assim?
- Existe alguma maneira de estimar a quantidade de espaço que pode continuar a usar à medida que meus dados continuam a crescer? (com base no tamanho de certas tabelas-chave em meu banco de dados ou algo assim?)
Edit : A única diferença significativa neste banco de dados em particular que posso pensar é que eles usam algumas exibições aninhadas muito grandes e complicadas para o conjunto de dados final. Se essas visualizações complexas são as que estão sendo usadas para construir o cubo, isso poderia explicar o alto uso do tempDB?
Enquanto o cubo é criado, você pode executar a ferramenta de diagnóstico sp_WhoIsActive de Adam Machanic para ver quais consultas estão alocando espaço no TempDB. Gravei um vídeo tutorial sp_WhoIsActive para mostrar como funciona. Inclua o parâmetro @get_plans = 1 ao chamá-lo e também obterá os planos de execução. Dessa forma, você pode ver exatamente o que está usando o TempDB e por quê.