Banco de dados tempdb

O banco de dados do sistema tempdb é um recurso global disponível a todos os usuários conectados a uma instância de SQL Server e é usado para manter o seguinte:

  • Os objetos de usuário temporários criados explicitamente como: tabelas temporárias globais ou locais, procedimentos armazenados temporários, variáveis de tabela ou cursores.

  • Objetos internos criados por Mecanismo de banco de dados do SQL Server, por exemplo, tabelas de trabalho para armazenar resultados intermediários para spool ou classificação.

  • Versões de linha geradas por transações de modificação de dados em um banco de dados que usa a leitura de confirmados usando transações de isolação de controle de versão de linha ou isolação de instantâneo.

  • As versões de linhas geradas por meio de transações de modificação de dados para recursos como: operações de índice on-line, vários conjuntos de resultados ativos (MARS) e gatilhos AFTER.

As operações em tempdb são registradas minimamente. Isso permite que as transações sejam revertidas. tempdb é recriado cada vez que SQL Server é iniciado, de modo que o sistema sempre começa com uma cópia limpa do banco de dados. As tabelas temporárias e procedimentos armazenados são descartados automaticamente ou desconectados e nenhuma conexão fica ativa quando o sistema é desligado. Portanto, nunca há nada em tempdb a ser gravado de uma sessão de SQL Server para outra. As operações de backup e restauração não são permitidas em tempdb.

Propriedades físicas de tempdb

A tabela a seguir lista os valores iniciais de configuração dos dados tempdb e dos arquivos de log. Os tamanhos desses arquivos talvez variem ligeiramente para diferentes edições do SQL Server.

Arquivo

Nome lógico

Nome físico

Aumento do arquivo

Dados primários

tempdev

tempdb.mdf

Aumento automático de 10 por cento até que o disco fique cheio.

Log

templog

templog.ldf

Aumento automático de 10 por cento até um máximo de 2 terabytes.

O tamanho de tempdb pode afetar o desempenho de um sistema. Por exemplo, se o tamanho de tempdb for muito pequeno, o processamento do sistema pode ficar muito ocupado com o aumento automático do banco de dados para oferecer suporte aos requisitos de carga de trabalho cada vez em que você iniciar SQL Server. Você pode evitar essa sobrecarga aumentando o tamanho de tempdb. Para obter mais informações, consulte Otimizando o desempenho de tempdb e Planejamento de capacidade para tempdb.

Melhorias de desempenho em tempdb

Em SQL Server, tempdb o desempenho é aprimorado dos seguintes modos:

  • As tabelas temporárias e variáveis de tabela podem ser colocadas em cache. O armazenamento em cache permite que as operações de descarte e criação de objetos temporários sejam executadas rapidamente e reduz a contenção de alocação de página.

  • O protocolo de travamento da página de alocação é aprimorado. Isso reduz o número de travas de UP (atualização) usadas.

  • A sobrecarga de logging para tempdb é reduzida. Isso reduz o consumo de largura da banda de E/S do disco no arquivo de log tempdb.

  • O algoritmo para alocar páginas combinadas em tempdb é aprimorado.

Movendo os arquivos de log e dados de tempdb

Para mover os arquivos de dados e de log de tempdb, consulte Movendo bancos de dados do sistema.

Opções de banco de dados

A tabela a seguir lista o valor padrão de cada opção de banco de dados no banco de dados tempdb e se a opção pode ser modificada. Para exibir as configurações atuais dessas opções, use a exibição de catálogo sys.databases.

Opção de banco de dados

Valor padrão

Pode ser modificado

ALLOW_SNAPSHOT_ISOLATION

OFF

Sim

ANSI_NULL_DEFAULT

OFF

Sim

ANSI_NULLS

OFF

Sim

ANSI_PADDING

OFF

Sim

ANSI_WARNINGS

OFF

Sim

ARITHABORT

OFF

Sim

AUTO_CLOSE

OFF

Não

AUTO_CREATE_STATISTICS

ON

Sim

AUTO_SHRINK

OFF

Não

AUTO_UPDATE_STATISTICS

ON

Sim

AUTO_UPDATE_STATISTICS_ASYNC

OFF

Sim

CHANGE_TRACKING

OFF

Não

CONCAT_NULL_YIELDS_NULL

OFF

Sim

CURSOR_CLOSE_ON_COMMIT

OFF

Sim

CURSOR_DEFAULT

GLOBAL

Sim

Opções de disponibilidade de banco de dados

ONLINE

MULTI_USER

READ_WRITE

Não

Não

Não

DATE_CORRELATION_OPTIMIZATION

OFF

Sim

DB_CHAINING

ON

Não

ENCRYPTION

DESATIVADO

Não

NUMERIC_ROUNDABORT

OFF

Sim

PAGE_VERIFY

CHECKSUM para novas instalações do SQL Server.

NONE para atualizações do SQL Server.

Sim

PARAMETERIZATION

SIMPLE

Sim

QUOTED_IDENTIFIER

OFF

Sim

READ_COMMITTED_SNAPSHOT

OFF

Não

RECOVERY

SIMPLE

Não

RECURSIVE_TRIGGERS

OFF

Sim

Opções do Service Broker

ENABLE_BROKER

Sim

TRUSTWORTHY

OFF

Não

Para obter uma descrição dessas opções de banco de dados, consulte Opções ALTER DATABASE SET (Transact-SQL).

Restrições

As seguintes operações não podem ser executadas no banco de dados tempdb:

  • Adição de grupos de arquivos

  • Backup ou restauração de banco de dados.

  • Alteração de agrupamento. O agrupamento padrão é o agrupamento de servidor.

  • Alteração do proprietário do banco de dados. tempdb é de propriedade do dbo.

  • Criação de um instantâneo do banco de dados

  • Descarte do banco de dados.

  • Descarte do usuário convidado do banco de dados.

  • Habilitação do Change Data Capture.

  • Participação no espelhamento de banco de dados.

  • Remoção do grupo de arquivos primário, arquivo de dados primário ou arquivo de log.

  • Renomeação do banco de dados ou grupo de arquivos primário.

  • Execução de DBCC CHECKALLOC.

  • Execução de DBCC CHECKCATALOG.

  • Definindo o banco de dados como OFFLINE.

  • Definindo o banco de dados ou grupo de arquivos primário como READ_ONLY.

Permissões

Qualquer usuário pode criar objetos temporários no tempdb. Os usuários somente podem acessar seus próprios objetos, a menos que recebam permissões adicionais. É possível revogar a permissão de conexão para tempdb para impedir que se use o tempdb, mas isso não é recomendado porque algumas operações de rotina exigem o uso do tempdb.