Inquiridor
Performance

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
Todas as Respostas
-
-
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
-
É 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.
-
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