none
Connection pool X abertura de múltiplas conexões RRS feed

  • Pergunta

  • Pessoal, boa tarde.

    Conversando com um amigo sobre a minha tentativa de repassar minha conexão principal para os meus webusercontrols, ele comentou que isso é desnecessário pois a pool já faz, então eu não preciso me preocupar em usar a mesma e poderia abrir e fechar cada conexão no wuc normalmente.

    Aí me veio a dúvida : Aqui no forum um colega indicou que eu usasse sempre que possível a mesma conexão.

    Exemplo 

    Using conexao as new conexao
    Administrador.conexao = conexao
    Administrador.qualquer coisa
    
    Cliente.conexao = conexao
    Cliente.qualquercoisa
    end usign

    Agora pergunto.. se a própria pool do .net mantém as conexões abertas para serem reutilizadas. Qual diferença prática eu tenho em usar uma conexão apenas para várias consultas ou de ficar abrindo e fechando já que o .net mantém elas aberta do mesmo jeito ?

    Using conexao as new conexao
    Administrador.conexao = conexao
    Administrador.qualquer coisa
    end using
    
    using conexao as new conexao
    Cliente.conexao = conexao
    Cliente.qualquercoisa
    end using

    Obrigado

    quinta-feira, 12 de junho de 2014 14:45

Respostas

  • Rafael, agora eu entendi sua dúvida.

    Com relação aos objetos de conexão, realmente, é indiferente nesse caso...Se você tem a mesma conexão com o banco e ele possui connection pool habilitado, não vai fazer diferença alguma você usar 1 objeto connection ou vários, já que ao abrir e fechar a conexão, você só está "usando ou não" uma conexão do pool.

    O que não pode esquecer mesmo é que devemos sempre abrir e fechar a conexão para liberar conexões no pool, de resto, é indiferente.

    Para saber mais, veja isso na documentação:

    SQL Server Connection Pooling (ADO.NET)

    Abraços !


    Diego Murakami View Diego Murakami's LinkedIn profile - MCP, MS, MCSD
    * Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.

    sexta-feira, 13 de junho de 2014 15:06

Todas as Respostas

  • Rafael, bom dia.

    A diferença é que dependendo da query que você vai executar, realmente vale a pena utilizar a mesma conexão por conta de performance.

    Muitas vezes o tempo em uma consulta no banco é maior para conectar e desconectar do que propriamente executar o SQL no banco.

    Portanto, por medida de performance, sempre evite fazer conexões desnecessárias no banco.

    Se a aplicação é utilizada por 1 usuário fazendo 2 conexões, o servidor não vai sentir muito esse problema, mas se tiverem 1000 usuários, imagina a diferença.

    Pense nisso ;)

    Abraços !


    Diego Murakami View Diego Murakami's LinkedIn profile - MCP, MS, MCSD
    * Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.

    sexta-feira, 13 de junho de 2014 13:57
  • Bom dia Diego,

    Mas neste caso não estamos ignorando o conceito de connection pool ?
    Se a pool existe justamente para manter o banco aberto e eu não precisar abrir a conexão novamente, se eu fechar no .net e abrir denovo, ele não aproveitaria da pool e portanto eu estaria usando uma conexão aberta da mesma maneira ?

    Isso que não ficou muito claro para mim.

    Abraços !
    sexta-feira, 13 de junho de 2014 14:09
  • Rafael, agora eu entendi sua dúvida.

    Com relação aos objetos de conexão, realmente, é indiferente nesse caso...Se você tem a mesma conexão com o banco e ele possui connection pool habilitado, não vai fazer diferença alguma você usar 1 objeto connection ou vários, já que ao abrir e fechar a conexão, você só está "usando ou não" uma conexão do pool.

    O que não pode esquecer mesmo é que devemos sempre abrir e fechar a conexão para liberar conexões no pool, de resto, é indiferente.

    Para saber mais, veja isso na documentação:

    SQL Server Connection Pooling (ADO.NET)

    Abraços !


    Diego Murakami View Diego Murakami's LinkedIn profile - MCP, MS, MCSD
    * Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.

    sexta-feira, 13 de junho de 2014 15:06
  • Perfeito Diego, muito obrigado pelo esclarecimento.

    sexta-feira, 13 de junho de 2014 17:38