2008-08-07 11 views
17

¿Cuánta sobrecarga de rendimiento de base de datos implica utilizar C# y LINQ en comparación con consultas optimizadas personalizadas cargadas principalmente con C de bajo nivel, ambas con un servidor SQL Server 2008?¿Cuánta sobrecarga de rendimiento de base de datos usa LINQ?

Estoy pensando específicamente aquí en un caso en el que tiene un programa bastante intensivo en datos y realizará una actualización de datos o actualizará al menos una vez por pantalla y tendrá 50-100 usuarios simultáneos.

Respuesta

1

En mi experiencia, la sobrecarga es mínima, siempre que la persona que escribe las consultas sabe lo que está haciendo y toma las precauciones habituales para garantizar que las consultas generadas sean óptimas, que los índices necesarios estén en su lugar, 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 esto ... 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 para eso es, por supuesto, mover los agregados al proceso o vista almacenados. 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

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.

Cuestiones relacionadas