none
Performance RRS feed

  • Pergunta

  • Pessoal,

     

    Gostaria de saber o que gasta mais performance no SQL Server. Abrir uma conexão e mante-la aberta no PAGE ONLOAD e utilizar vários commands com a mesma conexão e depois fecha-la no PAGE UNLOAD ou abrir e fechar várias conexões neste mesmo intervalo??

     

    Se possível links para MSDN Library...

     

    Valeu

    segunda-feira, 2 de junho de 2008 18:06

Todas as Respostas

  •  

    JuninhoDev

     

    Veja, não tenho link's pra demonstrar isso..... mas em alguns teste pude perceber que manter a conexão aberta, é mais vantajoso. que fechar e abrir varias vezes no intervalo que vc menciona.

     

     

    Wander Junior

    segunda-feira, 2 de junho de 2008 19:27
  • Boa Tarde,

     

    Manter a conexão aberta e executar vários comandos é mais vantajoso. Essa é a própria filosofia do connection pooling, ou seja, reaproveitamento de conexões. Abrir uma conexão a um banco de dados é sem dúvida uma das operações mais caras (tanto para a aplicação quanto para o banco) e manter uma conexão aberta (por curtos períodos de tempos) é mais performático.

     

    Não encontrei nenhum link no MSDN Library, mas bastaria fazer um loop com 200 acessos a dados. Na primeira tentativa abrindo e fechando a conexão e na segunda mantendo a conexão aberta com os 200 acessos. Você verá que manter a conexão aberta é mais performático.

     

    Do ponto de vista do SQL Server só é preciso que as conexões sejam fechadas. Esquecer de fechar as conexões é pior do que não destruí-las.

     

    [ ]s,

     

    Gustavo

     

    segunda-feira, 2 de junho de 2008 20:29
  • É verdade que abrir e fechar a ligação ao servidor é mais lento, mas apenas da primeira vez. Penso que ele guarde em cache a ligação e nas próximas vezes é bem mais rápido.

     

    Do ponto de vista de segurança é muito pior deixar a ligação aberta.

    segunda-feira, 2 de junho de 2008 20:53
  • Boa Noite,

     

    Se o connection pooling estiver ativado certamente será mais rápido (inclusive da primeira vez). Mas ainda que o pooling melhore o desempenho por reaproveitar conexões ao invés de destruí-las completamente, instanciar um objeto várias vezes é uma tarefa a mais e não pode ter um desempenho superior.

     

    Segurança é um ponto importante mas não vejo como uma chamada a uma página que abra uma conexão no evento OnLoad e a destrua no evento UnLoad possa oferecer um risco maior do que abrí-la e fechá-la várias vezes.

     

    [ ]s,

     

    Gustavo

     

    quarta-feira, 4 de junho de 2008 22:50