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

  • Siempre que sea posible, evite repetir las filas de encabezado y pie de página para una región de datos que abarque varias páginas. Esto incluye las filas de encabezado y pie de página, y las filas de encabezado de grupo y pie de página para una región de tabla, matriz o datos de una lista.
  • En los informes que tienen muchos cuadros de texto, establezca sus propiedades CanGrow y CanShrink en False. De forma predeterminada, cada celda de una región de datos de una matriz o tabla contiene un cuadro de texto con CanGrow establecido en True. Cuando una tabla o matriz tienen muchas filas o columnas, el número de cuadros de texto se incrementa rápidamente.
  • Siempre que sea posible, evite establecer la propiedad KeepTogether en las regiones de datos de la lista, matriz y tabla. Cuando KeepTogether es True, el procesador de informes debe determinar si toda la región de datos puede caber en una única página y, a continuación, determinar qué página utilizar.
  • Al diseñar diseños de forma libre utilizando regiones de datos de lista, utilice rectángulos como contenedores para agrupar los cuadros de texto. Los contenedores ayudan a los representadores a determinar lo que cabe en una página.
  • Los gráficos generalmente se representan como imágenes. Evite anidar un gráfico en una tabla o matriz con miles de filas. Cuando el Visor de HTML los representa, estos informes deben usar recursos cuando el procesador de informes recupera cada imagen del gráfico del servidor de informes. Cuando se representan en otros formatos, estos informes deben generar cada imagen de gráfico para el formato de salida, lo que provoca archivos de resultados mayores y tiempos de representación más largos.
    Diseñe los gráficos para el representador de destino. No necesita la misma resolución en un monitor que en una página impresa. Por ejemplo, de forma predeterminada, el valor de puntos por pulgada (ppp) para un archivo PDF es 300. Puede cambiar esto con la configuración de la información de dispositivos para el representador PDF. Sin embargo, cuanto mayor es la resolución, más memoria se necesita.
    Dd353300.note(es-es,SQL.90).gifNota:

Excel

  • Agregue saltos de página donde corresponda. Cada salto de página define una nueva hoja de cálculo. Cada hoja de cálculo puede tratar hasta 65.536 filas. Para obtener más información, vea Cómo agregar un salto de página (Diseñador de informes).
  • Alinee los elementos de los informes verticalmente. El representador de Excel agrega celdas adicionales donde se necesiten para alinear los bordes de los elementos de los informes en la superficie de diseño del informe. Esto provoca celdas combinadas en la hoja de cálculo de Excel. Para evitar las celdas combinadas, alinee verticalmente los bordes de los elementos de informe con las columnas de la tabla y la matriz. Para evitar los errores de redondeo que se producen al especificar las unidades en las pulgadas (p) y fracciones de pulgadas, especifique las unidades en puntos (pts). Las unidades predeterminadas para Excel son los puntos.
  • Para los cuadros de texto, evite establecer la propiedad TextAlign en General. Este valor requiere un procesamiento condicional según el contenido del cuadro de texto.

HTML

  • En los informes grandes, evite establecer la propiedad de informe InteractiveHeight en 0. Los representadores HTML no son eficaces en las páginas HTML muy grandes. Cuando InteractiveHeight es 0, el informe entero se trata como una página.

PDF

Imagen

TIFF

Imprimir

  • Evite los saltos de página horizontales. Para quitar las páginas horizontales adicionales, revise los márgenes, los anchos de columna y el espacio en blanco de los informes. El procesador de informes conserva el espacio en blanco que se ve en la superficie de diseño del informe. Para comprobar los cambios, exporte el informe a un archivo TIFF y véalo en el visor de imágenes y fax de Microsoft.
  • Evite incluir una referencia al campo integrado TotalPages en el encabezado de página o pie de página. Los representadores que muestran informes en páginas físicas deben procesar un informe con este valor dos veces: una para determinar el número total de páginas y una segunda para representar cada página con el valor correcto.
  • Siempre que sea posible, evite establecer la propiedad del elemento de informe RepeatWith en True para los informes que abarcan varias páginas horizontales.
  • Compruebe que el tamaño de página esté establecido en un valor razonable, por ejemplo, 8,5 p.

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

Ayuda e información

Obtener ayuda sobre SQL Server 2005