Pergunta

O quanto de desempenho do banco de dados sobrecarga está envolvido com o uso de C# e LINQ comparado ao costume consultas otimizadas carregado com a maioria de baixo nível C, ambos com um 2008 de SQL Server back-end?

Estou pensando especificamente aqui de um caso em que você tem um bastante intensivo de dados do programa e vai fazer uma atualização de dados ou atualizar pelo menos uma vez por tela e vai ter de 50 a 100 usuários simultâneos.

Foi útil?

Solução

Na minha experiência, a sobrecarga é mínima, desde que a pessoa escrever as consultas sabe o que ele/ela está fazendo, e tomar as precauções habituais para garantir as consultas geradas são o ideal, que o necessário índices estão no lugar, etc, etc.Em outras palavras, o impacto do banco de dados deve ser o mesmo;há um mínimo, mas geralmente insignificante sobrecarga no lado app.

O que disse...há uma exceção a esta;se uma única consulta gera vários agregados a L2S provedor de converte-lo para uma grande consulta com uma sub-consulta por agregado.Para uma tabela grande pode ter um significativo impacto de e/S como o db custo de e/S para a consulta cresce magnitudes para cada agregado novo na consulta.

A solução para isso é claro para mover os agregados para o procedimento armazenado ou vista.Matt Warren tem algum código de exemplo para uma alternativa de consulta provedor de traduzir esse tipo de consultas de uma forma mais eficiente.

Recursos:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=334211

http://blogs.msdn.com/mattwar/archive/2008/07/08/linq-building-an-iqueryable-provider-part-x.aspx

Outras dicas

Graças Stu.Linha de fundo parece ser a de que o LINQ to SQL provavelmente não tem um banco de dados significativos sobrecarga de desempenho com as versões mais recentes se você é capaz de usar um compilado de escolha, e o mais lento funções de atualização de são susceptíveis de ser mais rápido, a menos que você tem REALMENTE uma afiada perito a realizar a maior parte da codificação.

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