tuning trucos rendimiento procedimientos optimizar mejorar lentitud inner framework datos consultas almacenados sql-server linq performance linq-to-sql

sql-server - rendimiento - trucos sql server



¿Cuánta sobrecarga de rendimiento de la base de datos usa LINQ? (2)

Gracias Stu En pocas palabras, parece que LINQ to SQL probablemente no tenga una sobrecarga significativa de rendimiento de la base de datos con las versiones más nuevas si puede usar una selección compilada, y las funciones de actualización más lentas probablemente sean más rápidas a menos que tenga un mensaje REALMENTE nítido. experto haciendo la mayor parte de la codificación.

¿Cuánta sobrecarga de rendimiento de base de datos involucra el uso de C # y LINQ en comparación con las consultas optimizadas personalizadas cargadas principalmente con C de bajo nivel, ambas con un back-end de SQL Server 2008?

Concretamente, estoy pensando en un caso en el que tienes un programa que requiere un uso intensivo de datos y que realizará una actualización o actualización de datos al menos una vez por pantalla y tendrá de 50 a 100 usuarios simultáneos.


En mi experiencia, la sobrecarga es mínima, siempre que la persona que escribe las consultas sepa lo que está haciendo y tome las precauciones habituales para garantizar que las consultas generadas sean óptimas, que los índices necesarios estén en su lugar, etc. etc. En otras palabras, el impacto de la base de datos debe ser el mismo; hay una sobrecarga mínima pero generalmente insignificante en el lado de la aplicación.

Dicho eso ... hay una excepción a esto; si una sola consulta genera múltiples agregados, el proveedor L2S la traduce a una consulta grande con una subconsulta por agregado. Para una tabla grande, esto puede tener un impacto de E / S significativo a medida que el costo de E / S de BD para la consulta crece en magnitudes para cada agregado nuevo en la consulta.

La solución alternativa para eso es, por supuesto, mover los agregados al proceso o vista almacenada. Matt Warren tiene un código de muestra para un proveedor de consultas alternativo que traduce ese tipo de consultas de una manera más 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