5 Comentários

  1. Fábio Pereira de Souza

    Thiago, bom dia.

    Uma vez estava trabalhando com tabela temporária (SQL Server) e percebi uma notável diferença de performance entre a tabela real e a temporária, sendo que ambas tinham exatamente a mesma estrutura.

    Eu percebi essa diferença, mas nunca fui atras para saber o motivo. Se é que realmente existe essa diferença, ou se foi por conta do ambiente, não sei.

    Ja ouviu falar? Obrigado.

    Responder

    1. O que ocorre com as tabelas temporárias é que geralmente elas são utilizadas em Trigger ou Procedures
      isso já implica na performance pois as tabelas temporárias são criadas em disco, ainda dentro de uma trigger ou
      procedure damos carga na tabela e geralmente aplicamos select na tabela temporária.
      Já notou que sempre que você da o primeiro select demora mais que o mesmo select aplicado pela segunda vez?
      Isso é o Pool de cache do SQL você cria uma temporária em disco, popula a tabela e depois aplica um select que ainda não se encontra em cache.
      Todos esses fatores implicam na performace do SQL.

      Responder
  2. Thiago Caserta

    Na verdade o motivo principal é porque o Recompilation Threshold de tabelas temporárias é menor do que o de tabelas persistentes, principalmente quando há poucos registros iniciais.. Muitas pessoas acabam utilizando Table Variables para evitar a recompilacao constante nos planos que envolvam temp tables. O trade off é que Table Variables não possuem Recompilation Threshold, o que também pode afetar a performance conforme dados forem sendo inseridos. Acho muito útil as temp tables, mas deve-se avaliar quando serem utilizadas, pondo numa balança os motivos que descrevi.

    Responder
  3. Fabio bulhoes

    Boa noite Thiago.

    Tenho uma aplicação em Access que utiliza conexão via ODBC a um banco de dados Sql Server 2008. Nessa conexão uso login do mesmo usuário Sql Server partindo de múltiplas estações de trabalho. Quando cada usuário de uma dessas estações de trabalho entra com o Usuário Sql server na conexão, todas as tabelas temporárias locais criadas por eles na execução de uma determinada storage procedure pode apagar uma já criada pela seção de uma outra conexão com o mesmo usuário mais de uma estação de trabalho diferente?

    Resumindo a pergunta,

    Se várias pessoas em estações de trabalho diferentes conectarem ao Sql server via ODBC com o mesmo usuário as tabelas temporárias criadas eliminarão umas as outras?

    Abraços,

    Responder

    1. Fabio, muito obrigado pelo seu comentário e a resposta é caso você esteja utilizando tabela temporária local não haverá problemas em ter múltiplos usuarios usando as tabelas pois a tabela temporária local é por seção, ou seja, você consegue criar uma a cada seção sem que dê problema, mas se estiver utilizando a global ai sim teria o problema de uma seção dropar e criar uma nova.

      Responder

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *


*