Banco de dados tempdb
O banco de dados do sistema tempdb é um recurso global que está disponível para todos os usuários conectados à instância do SQL Server e é usado para conter 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 pelo mecanismo de banco de dados SQL Server, por exemplo, tabelas de trabalho para armazenar resultados intermediários para spools 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 transações sejam revertidas. tempdb é recriado sempre que SQL Server é iniciado para que o sistema sempre comece com uma cópia limpo 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 no tempdb a ser salvo de uma sessão de SQL Server para outra. As operações de backup e restauração não são permitidas no 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 podem variar um pouco em 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 em 10% até que o disco esteja cheio |
Log | templog | templog.ldf | Aumento automático de 10 por cento até um máximo de 2 terabytes. |
O tamanho do tempdb pode afetar o desempenho de um sistema. Por exemplo, se o tamanho do tempdb for muito pequeno, o processamento do sistema poderá estar muito ocupado com o autogrowing do banco de dados para dar suporte ao requisito de carga de trabalho sempre que você começar a SQL Server. Você pode evitar essa sobrecarga aumentando o tamanho do tempdb.
Melhorias de desempenho em tempdb
Em SQL Server, o desempenho do tempdb é aprimorado das seguintes maneiras:
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 de banda de E/S do disco no arquivo de log tempdb .
O algoritmo para alocar páginas mistas em tempdb é aprimorado.
Movendo os arquivos de log e dados de tempdb
Para mover os arquivos de log e dados tempdb , consulte Mover bancos de dados do sistema.
Opções de banco de dados
A tabela a seguir lista o valor padrão para 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 | ATIVADO | Sim |
AUTO_SHRINK | OFF | Não |
AUTO_UPDATE_STATISTICS | ATIVADO | 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 No Não |
DATE_CORRELATION_OPTIMIZATION | OFF | Sim |
DB_CHAINING | ATIVADO | Não |
ENCRYPTION | OFF | Não |
NUMERIC_ROUNDABORT | OFF | Sim |
PAGE_VERIFY | CHECKSUM para novas instalações de SQL Server. NONE para atualizações de SQL Server. |
Sim |
PARAMETERIZATION | SIMPLES | Sim |
QUOTED_IDENTIFIER | OFF | Sim |
READ_COMMITTED_SNAPSHOT | OFF | Não |
RECOVERY | SIMPLES | 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 ordenação. A ordenação padrão é a ordenação do servidor.
Alteração do proprietário do banco de dados. tempdb pertence a sa.
Criação de um instantâneo do banco de dados
Descartando o banco de dados.
Descartando o 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 podem acessar somente seus próprios objetos, a menos que recebam permissões adicionais. É possível revogar a permissão de conexão ao tempdb para impedir um usuário de usar tempdb, mas isto não é recomendado porque algumas operações rotineiras exigem o uso de tempdb.
Conteúdo relacionado
Opção SORT_IN_TEMPDB para índices
sys.master_files (Transact-SQL)
Mover arquivos de banco de dados