Pergunta

Estou trabalhando em um programa .NET que executa scripts arbitrários em um banco de dados.

Quando uma colegas começou a escrever o código de acesso ao banco de dados, ele simplesmente expôs um objeto de comando ao restante do aplicativo que é reutilizado (configuração CommandText/Type, chamando ExecuteNonQuery() etc.) Para cada declaração.

Eu imagino que este seja um grande desempenho para declarações repetidas e idênticas, porque elas são analisadas de novo a cada vez.

O que estou me perguntando, no entanto, é: isso também degradará a velocidade de execução se cada declaração for diferente da anterior (não apenas parâmetros diferentes, mas uma declaração totalmente diferente)? Não consegui encontrar facilmente uma resposta sobre isso na documentação.

BTW, o RDBMS usado é o Oracle, mas acho que essa pergunta não é realmente específica do banco de dados.

PS eu sei expor o mesmo Command O objeto não é seguro, mas isso não é um problema aqui.

Foi útil?

Solução

Há algumas despesas gerais envolvidas na criação de novos objetos de comando e, portanto, em certas circunstâncias, pode fazer sentido reutilizar o mesmo comando. Mas, como o caso geral aplicado para uma aplicação inteira, parece mais do que um pouco estranho.

Outras dicas

O desempenho do desempenho geralmente vem do estabelecimento de uma conexão com o banco de dados, mas o ADO.NET cria um pool de conexão para ajudar aqui.

Se você deseja evitar a análise de declarações sempre de novo, pode colocá -las em procedimentos armazenados.

Imagino que seu colega use uma abordagem de estilo antigo que ele herdou de trabalhar em outras plataformas em que reutilizar um objeto de comando fez a diferença.

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