/ / LINQ to SQL: Primera llamada - asp.net, sql-server-2005, linq-to-sql

LINQ to SQL: Primera llamada - asp.net, sql-server-2005, linq-to-sql

Estoy usando LINQ to SQL para acceder a la base de datos (SQL Server 2005). La primera llamada tarda hasta 10 segundos en recuperar los datos, una segunda llamada toma menos de un segundo.

¿Qué se puede hacer para mejorar el rendimiento de la primera llamada a la base de datos? La acción de la base de datos ocurre en el controlador de una aplicación mvc de asp.net.

Gracias

Respuestas

1 para la respuesta № 1

Creo que lo que estás experimentando es SQL ServerEl caché de la consulta y es normal. Ahora, si los 10 segundos originales son demasiado, entonces necesita capturar la consulta de SQL (sugeriría el generador de perfiles) y luego revisarla. En el pasado, ejecutaba el sql en la consola de administración con el plan de ejecución real seleccionado. Hay recursos en la web para explicar cómo leerlo, pero debería ayudarlo a encontrar el cuello de botella. HTH

Editar Quiero decir que es normal que las consultas de larga duración se aceleren después de que se hayan ejecutado una vez, ya que SQL Server almacena en caché la consulta (creo que el plan de ejecución es exacto) para su uso posterior.

Vadear


0 para la respuesta № 2

No estoy seguro de que este tipo de tiempo de espera esté relacionado con LINQ o ASP.NET. ¿También observa el tiempo de espera al utilizar la base de datos con ADO.NET?


0 para la respuesta № 3

Dudo mucho que Linq-to-SQL sea el culpable aquí. ¿Puede publicar el T-SQL que L2S está generando, junto con los recuentos de filas e información sobre la indexación?


0 para la respuesta № 4

Creo que lo que está experimentando es el proceso de compilación de Asp.Net la primera vez que se carga la página, no un problema de rendimiento con LTS. Una forma de medir el rendimiento es perfilarlo con el Linq a Sql Profiler. Le dirá exactamente qué es la consulta que se está generando, así como los tiempos de ejecución tanto para la consulta como para su código.