Arquivo de log do Tempdb Uso

6

Ver um servidor de teste aumenta o arquivo de log tempdb para 8 GB usado em 12 GB alocado ao longo de algumas horas, durante o teste de carga. Os arquivos de dados tempdb quase não usam o espaço no arquivo. Executando DBCC OPENTRAN em tempdb, não há transações abertas por mais de alguns segundos. Estou executando o SQL Server 2005 e a leitura do isolamento de instantâneo está desativada.

Como posso determinar o que está consumindo o log tempdb?

    
por Chad Miller 24.06.2009 / 17:25

3 respostas

5

O log do Tempdb é diferente dos logs nos bancos de dados do usuário, de algumas maneiras.

No tempdb, somente as informações UNDO são registradas em vez de REDO e UNDO, já que as transações no tempdb são sempre revertidas, nunca roladas. Isso ocorre porque o tempdb nunca executa a recuperação de falhas e, portanto, as informações de REDO nunca são usadas. Se esses termos não fizerem sentido para você, consulte meu artigo da TechNet Magazine sobre Noções básicas sobre registro em log e recuperação no SQL Server . Note, entretanto, que todas as operações que fazem alterações no tempdb serão registradas - tempdb não é 'não-logado'.

O log do Tempdb não limpa / trunca (veja o artigo novamente) como em outros logs do banco de dados. Em tempdb, o log truncará no ponto de verificação (como no modelo de recuperação SIMPLE regular), mas um ponto de verificação não ocorrerá automaticamente de tempos em tempos, como ocorre nos bancos de dados do usuário. Nos bancos de dados do usuário, o ponto de verificação ocorre para tentar limitar o tempo necessário para executar a recuperação de falhas (forçando páginas sujas em disco e limitando a quantidade de recuperação de REDO que deve ser executada) e para atualizar as páginas em lotes para reduzir quantidade de E / S realizada.

Como tal, os pontos de verificação no tempdb só ocorrem quando o uso do log do tempdb atinge uma certa proporção do tamanho total do log, em torno de 70%, porque o tempo de recuperação é irrelevante.

Para resumir, seu log tempdb está se comportando exatamente como esperado.

Espero que isso ajude.

    
por 24.06.2009 / 17:46
2

O log do tempdb cresce como qualquer outro log de transações. Tudo é registrado até o próximo ponto de verificação, no ponto em que as entradas de log são marcadas como sendo capazes de serem sobrescritas. Por padrão, o ponto de verificação é executado a cada minuto, então se você tem muita coisa acontecendo no tempdb (e já que você está testando a carga, provavelmente há muita coisa acontecendo no tempdb) então o log crescerá assim. / p>

Se o seu teste de carga corresponder à sua carga de produção, você poderá esperar que o log tempdb de produção também aumente para esse tamanho.

    
por 24.06.2009 / 17:37
0

Você pode usar o SQL Profiler para ver quais usuários / aplicativos estão fazendo coisas que exigem armazenamento tempdb.

    
por 24.06.2009 / 17:34

Tags