millones de transacciones: mejora el rendimiento del sitio web

Tengo una página que llama a un procedimiento almacenado para leer de 3 a 4 millones de datos, hacer algunos cálculos y devolver una pequeña tabla de datos. El SP es lento aprox. 20 a 30 seg. por lo tanto, la carga general de la página es lenta.

¿Volveré a factorizar el SP? pero el problema es que haga lo que haga, mi resultado final será el pequeño Datatable.

¿Hay alguna sugerencia para mejorar el rendimiento?

preguntado el 10 de mayo de 11 a las 13:05

¿Más detalles? ¿Por qué el procedimiento tiene que leer de 3 a 4 millones de registros? ¿Cuál es la estructura de la tabla y la consulta que se está ejecutando? -

Ni siquiera publicó el motor de base de datos que se está utilizando. ¿Cómo se supone que te ayudaremos? -

leyendo 3-4 millones de filas tomar tiempo: ¿se pueden leer realmente las filas o es el número de filas en la tabla? ¿Quizás un índice ayudaría? Publique la base de datos que está utilizando. -

He estado usando SQL Server 2008. El script SP se crea para agregar datos de más de 5 tablas. Se evita el cursor y necesito agrupar todos los datos para hacer una tabla de datos pequeña. En realidad, es una tabla de datos como una matriz. -

pero puedo ejecutar este sp en segundo plano antes de cargar esta página. ¿Será una buena idea utilizar SOAP? -

3 Respuestas

Si la tabla no se actualiza con tanta frecuencia, haga una tabla "agregada" que tenga un mejor rendimiento.

contestado el 10 de mayo de 11 a las 17:05

He estado usando SQL Server 2008. El script SP se crea para agregar datos de más de 5 tablas. Se evita el cursor y necesito agrupar todos los datos para hacer una tabla de datos pequeña. En realidad, es una tabla de datos como una matriz. - Shuvra

pero puedo ejecutar este sp en segundo plano antes de cargar esta página. ¿Será una buena idea utilizar SOAP? - Shuvra

@Shuvra: con la tabla agregada, @Pasi probablemente significa que debe almacenar la tabla de resultados finales (la pequeña) en algún lugar de la base de datos en una tabla separada diseñada solo para esto. Entonces, consultarlo sería súper rápido. Un trabajo en segundo plano en su servidor actualizaría los datos en esa tabla de vez en cuando, por lo que no es necesario incluir SOAP en la mezcla. - fretje

Gracias Pasi y fretje. Realmente es una buena idea. Muchas gracias por su ayuda. - Shuvra

@Shuvra: puede aceptar una respuesta si cree que le ayudó con su pregunta específica (bienvenido a Stack Overflow por cierto). - fretje

Si está batiendo a través de 3 o 4 millones de filas de datos y realmente está haciendo un trabajo real, 20 o 30 segundos es un rendimiento bastante decente, en mi humilde opinión. Verifique el plan de ejecución de su procedimiento almacenado. En el mundo ideal, todas las tablas recibirían búsquedas de índices en lugar de escaneos de tablas. Consulte con su DBA si no está seguro de cómo interpretar los resultados del plan de presentación. Supongo que estás usando SQL Server.

Verifique que sus tablas tengan índices apropiados y que las estadísticas estén actualizadas. Actualícelos si no. Vuelva a compilar el procedimiento almacenado. Los parámetros pasados ​​al procedimiento almacenado pueden mejorar el plan de ejecución almacenado en caché, si son valores extraños. Puede evitar esto codificando su procedimiento almacenado de esta manera:

create proc myProc

  @p1 varchar(32) 

as

  declare
    @p1Local varchar(32)

  set @p1Local = @p1

  ...

contestado el 10 de mayo de 11 a las 18:05

He usado índice en tablas y el plan de consulta parece estar bien. pero puedo ejecutar este sp en segundo plano antes de cargar esta página. ¿Será una buena idea utilizar SOAP? - Shuvra

¿Qué tiene que ver SOAP con el tiempo de ejecución de un procedimiento almacenado? - Nicolás Carey

Lo siento, tengo una idea muy pequeña sobre WCF / SOAP. de hecho, estoy trabajando en una aplicación web. por lo tanto, estoy pensando, la página donde este SP debe llamar y cargar el conjunto de datos. en lugar de hacer eso, si llamo al SP en la página anterior, el usuario puede ver que la página real se carga más rápido de lo normal. el parámetro SP se selecciona en el registro a tiempo. de esta manera puedo mejorar notablemente el rendimiento. ¿Es una buena idea? alguna sugerencia más. Muchas gracias por su ayuda. - Shuvra

Si sus datos no se actualizan con demasiada frecuencia, puede crear una vista indexada.

http://msdn.microsoft.com/en-us/library/dd171921(v=sql.100).aspx:

Las vistas indexadas proporcionan beneficios de rendimiento adicionales que no se pueden lograr con índices estándar. Las vistas indexadas pueden aumentar el rendimiento de las consultas de las siguientes formas: Las agregaciones se pueden calcular previamente y almacenar en el índice para minimizar los costosos cálculos durante la ejecución de la consulta. Las tablas se pueden unir previamente y el conjunto de datos resultante se puede almacenar. Se pueden almacenar combinaciones de uniones o agregaciones.

contestado el 13 de mayo de 11 a las 16:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.