Solucionar problemas de rendimiento de los informes
Nuevo: 17 de noviembre de 2008
En este tema se describen diversas formas en que se puede ayudar a mejorar el rendimiento de los informes.
Para solucionar problemas de rendimiento de los informes, utilice los archivos de registro de Reporting Services con el fin de determinar dónde se emplea la mayor parte del tiempo: en la recuperación de los datos, en el procesamiento del diseño de los informes o en la representación de los informes. Para obtener más información, vea Solucionar problemas con informes.
Después de determinar dónde se emplea más tiempo, utilice las secciones siguientes para ayudar a solucionar problemas concretos.
Mejorar el rendimiento de la recuperación de datos
Mejorar el rendimiento del procesamiento de informes
Mejorar el rendimiento de la representación de informes
Mejorar el rendimiento de la recuperación de datos
Cuanto más datos de informes se utilizan, más recursos y más almacenamiento se necesitan, más tráfico de red se crea y más tiempo de proceso se requiere. Para ayudar a controlar el rendimiento de los informes, diseñe informes que tengan una cantidad de datos y una complejidad razonables. Por ejemplo, pocos usuarios desean ver un informe de 1.000 páginas. Los usuarios tienen dificultades para mantener el contexto de un informe de obtención de detalles si la tabla tiene demasiados niveles de anidamiento o al examinar una tabla con demasiadas columnas. Los gráficos circulares con centenares de sectores se muestran desordenados y son difíciles de leer. Analice los requisitos de los informes para determinar cuidadosamente cuántos datos necesita y, a continuación, recupere sólo esos datos de los orígenes de datos del informe.
Utilice la información de las secciones siguientes para ayudar a reducir el tiempo que se utiliza en recuperar los datos del informe.
Recuperar más datos de los que se necesita
Es más eficaz filtrar, ordenar y agregar cantidades grandes de datos en el origen de datos que durante el procesamiento de los informes. Escriba las consultas de modo que sólo devuelvan los datos que desee mostrar en un informe. Si planea mostrar únicamente datos de resumen, calcule agregados en el origen de datos y no recupere datos detallados. En la lista siguiente se sugieren ideas para evaluar cada consulta del informe:
- Escriba consultas con cláusulas WHERE o HAVING que limiten los datos sólo a los que el usuario deba ver en el informe. Utilice parámetros de consulta para restringir los datos que se recuperan en tiempo de ejecución. Para obtener más información, vea Filtrar filas mediante WHERE y HAVING.
Al crear un informe de instantánea que tenga parámetros de informe que filtren datos, todos los datos posibles que se podían mostrar en el informe deben estar guardados en la instantánea. En este escenario, no utilice parámetros de consulta en las consultas del conjunto de datos. En su lugar, cree manualmente los parámetros de informe que pueda utilizar en expresiones de filtro para permitir que el usuario especifique los datos de informe que desee. - Escriba las consultas con la cláusula ORDER BY para ordenar de antemano los datos que se recuperan para un informe. Ordene los datos según desee que se ordenen en el informe. Si los datos están ordenados de antemano, se mejora el tiempo de proceso del informe debido a la manera en que está almacenado en memoria. Muchas tareas de procesamiento de informes no requieren ordenar los datos antes de procesarlos. Por ejemplo, SUM no depende del criterio de ordenación. Los datos dentro de instancias de grupo no se ordenan automáticamente. Si no necesita que la información esté ordenada en el informe, no establezca expresiones de ordenación en el conjunto de datos o en la región de datos. Para obtener más información, vea ORDER BY (cláusula de Transact-SQL) y Ordenar datos en un informe.
Sin embargo, ordenar los grupos u ordenar por valores de agregados es más fácil en los informes que en las consultas. Con frecuencia, ordenar los grupos en el informe es más eficaz que ordenar los grupos en la consulta. - Escriba consultas con GROUP BY para agregar valores en el origen de datos.
Muchas veces, la manera más efectiva de comunicar información es agregar valores y mostrar resúmenes. Puede calcular cierto nivel de agregados en el origen de datos y recuperarlos para un conjunto de datos. Los datos de "detalle" del conjunto de datos representan a los agregados calculados del origen de datos. Para obtener más información sobre los agregados de la consulta, vea Resumir los resultados de una consulta (Visual Database Tools).
Una vez que estos valores agregados de antemano están en un informe, puede continuar agregando valores siempre que use una función de agregado que sea transitiva matemáticamente, por ejemplo, SUM. Por ejemplo, supongamos que dispone de un conjunto de 6 valores: 1, 2, 3, 4, 5 y 6. Si agrupa los valores en pares, tiene un conjunto de 3 valores: 3, 7 y 11. Puede calcular la suma del primer conjunto (21) calcular la suma del segundo (21) y las sumas darán el mismo valor independientemente del grupo. Si calcula el promedio de los valores en los conjuntos utilizando la función AVG, obtiene un resultado diferente para cada conjunto. El promedio del conjunto de 6 elementos es 21/6 ó 3,5. El promedio del conjunto de 3 elementos es 21/3 ó 7. AVG no es una función transitiva. - Considere analizar y optimizar el rendimiento de las consultas en el origen de datos. Por ejemplo, para obtener información sobre el optimizador de consultas de SQL Server 2005, vea Rendimiento de las consultas y Procesar una única instrucción SQL.
- Considere la cantidad de datos necesaria para un gráfico. En un gráfico de líneas, al dibujar centenares de puntos en algunos píxeles de un monitor se degrada el rendimiento y no se mejora la representación visual de los gráficos. En un gráfico circular, el que haya más de 7 u 8 sectores tiene un valor cuestionable.
- En los elementos de informe con visibilidad condicional, el procesador de informes debe aplicar las expresiones de agrupación, ordenación y filtrado aun cuando únicamente esté visible primero el nivel superior de datos. Si el usuario sólo está interesado en ver datos detallados parte del tiempo, un informe de obtención de detalles es mejor opción. Los informes de obtención de detalles no se ejecutan hasta que un usuario haga clic en el vínculo de obtención de detalles en el informe principal. Los informes de obtención de detalles o los informes integrados procesan todos los datos incluso cuando están ocultos antes. Para obtener más información, vea Agregar vínculos a un informe.
- Considere crear instantáneas de ejecución para un informe. Una instantánea de informe incluye todos los datos del informe recuperados para los conjuntos de datos de la definición de informe. Para obtener más información, vea Instantáneas de informe.
Si el tráfico de red es cuantioso, los tiempos de espera son más largos
Cuando se pasan cantidades grandes de datos como tráfico de red, pueden producirse tiempos de espera para el usuario. Si conoce el número de usuarios esperado y el volumen previsto de vistas de informe, puede seleccionar el enfoque adecuado para implementar los componentes del servidor de informes.
Considere las estrategias siguientes para contribuir a reducir los tiempos de espera para el usuario:
- Mantenga la base de datos de servidores de informes en el mismo equipo que el servidor de informes.
La base de datos del servidor de informes tempdb administra los datos de los informes que se recuperan para cada consulta del conjunto de datos. Mantenga la base de datos tempdb en el servidor de informes para reducir el tráfico de red que puede ralentizar la ejecución de los informes. - En el caso de los orígenes de datos del almacén de datos, mantenga el almacén de datos en un servidor independiente al servidor de informes.
Aunque al recuperarse los datos a través de la red se agrega una tarea adicional para la ejecución de informes, tener el almacenamiento de datos y Reporting Services en el mismo servidor puede ralentizar el rendimiento porque ambos luchan por la memoria.
Para obtener más información, vea Planear una implementación de Reporting Services.
Agotar el tiempo de espera de las consultas
Si una consulta del conjunto de datos agota el tiempo de espera antes de recuperar los datos, puede especificar un valor de tiempo de espera en el informe. De forma predeterminada, este valor está establecido en 30 segundos. Para establecer el valor de tiempo de espera de una consulta del conjunto de datos, vea Cómo crear un conjunto de datos (Diseñador de informes). Para obtener más información, vea Establecer valores de tiempo de espera para la ejecución de informes.
Mejorar el rendimiento del procesamiento de informes
El procesamiento de informes se produce una vez recuperados para los conjuntos de datos de informe y los parámetros de informe. El procesador de informes combina el diseño del informe y los datos para crear un formato provisional que a continuación se pasa al representador de informes. El tiempo de proceso de los informes puede verse influido por el diseño del informe, la paginación y las expresiones complejas de los elementos de informe que tengan muchas instancias. Utilice esta sección para ayudar a mejorar el rendimiento de procesamiento de los informes.
Elegir la región de datos derecha
Utilice las regiones de datos de lista y tabla siempre que sea posible. Procesar una tabla o lista es más eficaz que procesar una matriz. Las regiones de datos de la lista y la tabla sólo admiten los elementos dinámicos de las filas; los diseños de matriz admiten los elementos dinámicos de las filas y columnas, que crean una estructura de diseño más compleja.
Evitar el valor de Páginas total en el encabezado o el pie de página para los representadores de páginas físicos
Una referencia al campo TotalPages global puede afectar al rendimiento del procesamiento de los informes cuando una extensión de representación de diseño que pagina las páginas físicas, por ejemplo, representa el informe PDF o imagen. Para obtener más información acerca de los representadores, vea Consideraciones de diseño para la representación de informes.
Usar funciones de agregado y de agrupamiento de regiones de datos complejas
Si existen muchos niveles de grupos anidados de región de datos de tabla o matriz, se puede afectar al rendimiento del procesamiento de los informes. Considere el nivel de agrupamiento, el número de instancias de grupo y el uso de funciones de agregado que requieren evaluarse una vez aplicadas las expresiones de orden, filtro y grupo.
Evite los agregados de ordenación posterior. Los agregados de ordenación posterior dependen del criterio de ordenación e incluyen las funciones siguientes: Previous, First, Last y RunningValue. Al incluir una o varias de estas funciones en una expresión, el procesador de informes debe ordenar los datos de destino antes de aplicar la función. Siempre que sea posible, evite incluir agregados de ordenación posterior en expresiones de diseños de matriz que tengan definiciones de grupo complejas, por ejemplo varios grupos anidados o contiguos.
Evalúe el diseño de informe y considere si se puede producir alguna agregación de datos en el origen de datos. Reducir la cantidad de datos del informe podría bastar para proporcionar un rendimiento aceptable sin cambiar ninguna llamada a las funciones de agregado.
Para obtener más información acerca de las funciones de agregado, vea Usar funciones de informe en expresiones (Reporting Services).
Especificar una recursividad innecesaria en las expresiones
Especifique una expresión primaria para un grupo sólo si va a definir una jerarquía recursiva, por ejemplo, un informe de la organización que muestre a los jefes y empleados. La propiedad Parent se aplica únicamente a los datos recursivos. La propiedad Parent no se aplica específicamente a la relación de grupos anidados primarios-secundarios.
Usar informes en una región de datos con muchas filas
Conozca las ventajas y desventajas del uso de informes integrados. Cada instancia del informe integrado es una ejecución de una consulta independiente y una tarea de procesamiento de un informe independiente.
- Utilice informes integrados en una región de datos cuando sólo haya algunas instancias de informes integradas.
- Evite los informes integrados en un grupo de regiones de datos cuando haya muchas instancias de grupos. Por ejemplo, para mostrar una lista tanto de las ventas como de las devoluciones de cada cliente, considere usar informes de obtención de detalles. Piense si puede escribir la consulta para combinar los datos de clientes con los datos de ventas y devoluciones, y a continuación agrupe según el identificador de cliente.
- Utilice informes integrados cuando usen un origen de datos diferente al del informe principal. Si el rendimiento constituye un problema, considere cambiar la consulta del conjunto de datos en el informe principal utilizando una de las estrategias siguientes:
- Recopile los datos de un almacenamiento de datos y use éste como origen de datos para un único conjunto de datos.
- Use servidores vinculados de SQL Server y escriba una consulta que recupere los datos de varias bases de datos.
- Utilice la capacidad de OPEN ROWSET para especificar bases de datos diferentes.
Usar la ordenación interactiva
Evite botones de ordenación interactiva a menos que los usuarios requieran la capacidad de cambiar el criterio de ordenación de datos en el informe.
Usar imágenes
Entienda los requisitos de recursos para las imágenes.
- Evite las imágenes grandes, incluyendo las imágenes de fondo. Las imágenes grandes requieren recursos de representación, memoria y procesamiento, sobre todo cuando se representan en representadores de copias en papel, por ejemplo imágenes de documentos, PDF o impresión.
- Evite que haya muchas instancias de imágenes pequeñas de una base de datos o un servidor, por ejemplo, los indicadores clave de rendimiento (KPI). Incluya estas imágenes en el informe como imágenes incrustadas.
- En los informes que tienen muchas imágenes, establezca el valor de AutoSize para las imágenes en un valor diferente como Ajustar.
Procesos que compiten por la misma memoria en el servidor de informes
Varias aplicaciones que compitan por los mismos recursos de memoria en un servidor de informes pueden afectar al procesamiento de los informes.
Trabaje con el administrador del sistema con el fin de comprobar que la configuración de la administración de memoria es el modelo correcto para usarse en el servidor de informes. Para obtener más información, vea Configurar la memoria disponible para Reporting Services.
Tiempos de espera de ejecución de informes
Para ejecutar informes grandes, hay dos tiempos de espera que debe ajustar: el de ejecución de informes y el de ASP.NET.
Los valores de tiempo de espera de ejecución de informes se especifican en el servidor de informes. Para obtener más información, vea Establecer valores de tiempo de espera para la ejecución de informes.
El archivo de configuración del servidor de informes controla la directiva de tiempo de espera ASP.NET. La ubicación predeterminada de este archivo es <drive>:\Archivos de programa\Microsoft SQL Server\MSSQL.n\Reporting Services\ReportServer\web.config. Para establecer el número máximo de segundos que una solicitud puede ejecutar, establezca el elemento httpRuntime en el valor de tiempo de espera en segundos. El fragmento XML siguiente muestra dónde agregar este elemento en el archivo de configuración:
<configuration>
. . .
<system.web>
. . .
<httpRuntime executionTimeout="90"/>
. . .
</system.web>
. . .
</configuration>
En las consultas de ejecución prolongada o informes complejos, puede que tenga que especificar un valor que represente varias horas.
Mejorar el rendimiento de la representación de informes
La representación de informes se produce una vez que se combinan los datos y el diseño, y se pasan a una extensión de representación. El tiempo de representación depende de la cantidad de datos, del número de instancias de elementos de informe y de los tamaños de página. Un representador de informes determina cuántos datos caben en una página. La definición de una página difiere según los representadores. Una página para el representador de Excel es una hoja de cálculo. Una página para el representador PDF, que puede imprimir un informe, es la página física. Una página para el Visor de HTML puede ser el informe entero. El diseño de informe para una página impresa puede diferir del destinado a una vista en línea. Si espera que los usuarios vean un informe en un formato concreto, diséñelo para ese formato. Para obtener más información, vea Consideraciones de diseño para la representación de informes.
En la tabla siguiente se sugieren maneras de ayudar a mejorar el rendimiento de representación de los informes.
Formato de representación | Descripción |
---|---|
Todos |
|
Excel |
|
HTML |
|
Imagen TIFF Imprimir |
|
Si tiene problemas para representar un informe en un formato, elija otro que produzca un archivo más pequeño, por ejemplo, CSV. En un informe publicado, puede especificar un formato de representación en la dirección URL. Para obtener más información, vea Specifying a Rendering Format in a URL.
Si no puede elegir otro formato porque la barra de herramientas de informe no está disponible, puede definir una suscripción para establecer un formato de representación y entregar el informe como documento estático a un recurso compartido de archivos. Para obtener más información, vea Entrega a recursos compartidos de archivos en Reporting Services.
Vea también
Conceptos
Archivos de registro de Reporting Services
Procesar informes de gran tamaño
Otros recursos
Solucionar problemas de Reporting Services
Errores y eventos de Reporting Services
Solucionar problemas con informes