Hoje implementei uma solução de monitoramento em nosso servidor SQL usando Cacti e a primeira coisa que notei é o crescimento no número de tabelas temporárias, em apenas 3 horas em nosso sistema de teste, tínhamos mais de 300 tabelas temporárias no banco de dados temporário. Também notei que o crescimento da memória do SQL Server nessas 3 horas foi enorme - 15 GB utilizados após 3 horas.
Havia apenas 3-4 usuários testando no sistema de teste e cerca de 5 conexões abertas para o aplicativo quando executei um SP_WHO.
O que pode estar causando isso? Fiz uma consulta sobre os objetos no BD temporário e todos os nomes são semelhantes a este #XXXXXXXXX, li em algum lugar que são da Tabela Variável (Declare @myTable...)
Existe alguma maneira de verificar por que temos um crescimento no número de tabelas temporárias e o que está causando isso? Qualquer ajuda nesta fase seria muito apreciada.
Vou instalar os service packs amanhã para 2008, espero que isso resolva o problema.
O uso da tabela temporária dependerá totalmente de seus aplicativos que possuem seus bancos de dados no SQL Server ou que estão usando o SQL Server. Por exemplo, o próprio aplicativo de monitoramento pode estar usando dezenas de tabelas temporárias enquanto coleta dados.
Quanto ao uso de memória, o SQL Server, por padrão, usará toda a memória necessária. Toda vez que é necessário modificar dados, ele carrega esses dados na memória e os deixa na memória até que o SQL Server precise da memória para outra coisa. Em outras palavras, o alto uso de memória não é algo com que você precise se preocupar, pois é totalmente normal. Dito isso, convém limitar a quantidade de memória à qual o SQL Server tem acesso para que não use toda a memória do servidor.
Você pode obter essas informações no tempdb seguindo a seguinte solução:
lendo tabelas temporárias que não são suas
Você pode obter algumas informações gerais sobre o tempdb seguindo a seguinte postagem:
Consulta DMV para obter dados armazenados em tabelas tempdb,...