Pergunta

  • O que é?
  • Como implemento o pool de conexões com MS SQL?
  • Quais são as ramificações de desempenho quando
    • Executar muitas consultas uma após a outra (ou seja,usando um loop com mais de 30 mil iterações chamando um procedimento armazenado)?
    • Executando algumas consultas que demoram muito (mais de 10 minutos)?
  • Existem práticas recomendadas?
Foi útil?

Solução

O pool de conexões é um mecanismo para reutilizar conexões, pois o estabelecimento de uma nova conexão é lento.

Se você usa uma string de conexão MSSQL e System.Data.SqlClient então você já está usando - em .Net esse material está oculto na maior parte do tempo.

Um loop de 30 mil iterações pode ser melhor como um cursor do lado do servidor (procure instruções de cursor T-SQL), dependendo do que você está fazendo com cada etapa fora do sproc.

Consultas longas são boas - mas tenha cuidado ao chamá-las de páginas da web, pois o Asp.Net não é realmente otimizado para longas esperas e algumas conexões serão interrompidas.

Outras dicas

Um pouco mais de informação sobre o pool de conexões...você já o está usando com o SqlClient, mas somente se sua cadeia de conexão for idêntica para cada nova conexão aberta.Meu entendimento é que a estrutura agrupará conexões automaticamente quando puder, mas se a cadeia de conexão variar, mesmo que ligeiramente, de uma conexão para outra, a nova conexão não virá do pool - ela será criada novamente (por isso é mais caro ).

Você pode usar o aplicativo Performance Monitor com XP/Vista para observar conexões SQL e verá rapidamente se o pool está sendo usado ou não.Procure na categoria ".NET CLR Data"" no Performance Monitor.

Eu apoio Keith;se você estiver chamando um procedimento armazenado 30.000 vezes, terá problemas muito maiores do que o pool de conexões.

Sua pergunta também foi parcialmente respondida por este tópico.Uma pesquisa teria revelado isso.A definição de Connection Pooling, da qual um Google teria respondido com o primeiro golpe sendo esse..

O que deixaria apenas as melhores práticas, o que acho que teria sido uma boa pergunta :)

+1 para Resposta de Keith.Ele acertou em cheio na cabeça.

Apenas um lembrete educado do FAQ:

Você pesquisou na Internet antes de fazer sua pergunta e vem até nós armados com pesquisas e informações sobre sua pergunta ...certo?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top