Поделиться через


Диагностика производительности отчетов

Добавления: 17 ноября 2008 г.

В этом разделе описаны способы повышения производительности отчетов.

Для диагностики производительности отчетов служат файлы журналов служб Reporting Services, по которым можно определить, на какие задачи затрачивается большая часть времени: на получение данных, на обработку макета отчета или на подготовку отчета к просмотру. Дополнительные сведения см. в разделе Устранение неполадок отчетов.

После определения круга задач, потребляющих наибольшее время, используйте следующие разделы для устранения конкретных неполадок.

Повышение производительности получения данных

Повышение производительности обработки отчетов

Повышение производительности подготовки отчетов к просмотру

Повышение производительности получения данных

Чем больше данных требуется для отчета, тем больше используется ресурсов, больше места требуется для хранения, более интенсивным становится сетевой трафик и больше времени затрачивается на обработку. С точки зрения производительности неразумно проектировать отчеты со слишком сложной структурой, содержащие очень большие объемы данных. Например, не многие пользователи захотят просматривать отчет из 1 000 страниц. Пользователям будет сложно следить за контекстом отчета с углубленной детализацией, если таблица обладает слишком большим уровнем вложенности. Кроме того, просматривать таблицу со слишком большим числом столбцов оказывается неудобно. Круговые диаграммы с несколькими сотнями срезов выглядят загроможденными и неудобны для чтения. Тщательно изучите требования к отчету, чтобы определить необходимый объем данных и получить из источников данных отчета только необходимые данные.

Сведения, представленные в следующих разделах, помогут сократить время, затрачиваемое на получение данных для отчета.

Получение избыточных данных

Фильтрацию, сортировку и статистическую обработку больших объемов данных эффективнее выполнять в источнике данных, а не во время обработки отчета. Создавайте запросы таким образом, чтобы они возвращали только данные, которые необходимо отображать в отчете. Если планируется выводить только сводные данные, выполняйте статистические вычисления в источнике данных и не передавайте подробные данные в отчет. В следующем списке представлены рекомендации по оценке каждого запроса в отчете.

  • Записывайте запросы с предложениями WHERE или предложениями HAVING, которые ограничивают запрос только теми данными, которые пользователь должен видеть в отчете. Используйте параметры запроса, ограничивающие данные, получаемые во время выполнения. Дополнительные сведения см. в разделе Фильтрация строк с помощью предложений WHERE и HAVING.
    Если создается отчет моментального снимка, имеющий параметры отчета, которые предназначены для фильтрации данных, то все возможные данные, которые могут отображаться в отчете, должны быть сохранены в моментальном снимке. В этом случае не следует использовать параметры запроса в запросах наборов данных. Вместо этого создайте вручную параметры отчета, которые можно использовать в критериях фильтра, чтобы пользователи могли задавать необходимые им данные отчета.
  • Записывайте запросы с предложением ORDER BY для предварительной сортировки данных, извлекаемых для отчета. Сортируйте данные в том порядке, в котором они должны быть отсортированы в отчете. Предварительно отсортированные данные позволяют уменьшить время обработки, поскольку в этом состоит назначение применяемого способа хранения их в памяти. Для многих задач обработки данных не требуется сортировка данных перед их обработкой. Например, функция SUM не зависит от порядка сортировки. Данные в экземплярах групп не сортируются автоматически. Если не требуется, чтобы данные в отчете были отсортированы, не задавайте выражения сортировки на наборе данных или в области данных. Дополнительные сведения см. в разделах Предложение ORDER BY (Transact-SQL) и Сортировка данных в отчете.
    Однако сортировку групп или сортировку по статистическим значениям в отчете выполнять проще, чем в запросе. Часто сортировка групп в отчете оказывается эффективнее, чем сортировка в запросе.
  • Записывайте запросы с предложением GROUP BY для статистической обработки значений в источнике данных.
    Зачастую наиболее эффективным способом доставки сведений является передача статистических обработок значений и отображение сводок. Можно вычислить статистические значения в источнике данных на некотором уровне и извлечь их для создания набора данных. После этого в наборе данных вместо подробных данных присутствуют статистические значения, вычисленные в источнике данных. Дополнительные сведения о статистической обработке в запросе см. в разделе Формирование итоговых результатов запросов (визуальные инструменты для баз данных).
    После того как значения, прошедшие предварительную статистическую обработку, включены в отчет, можно продолжить статистические вычисления при условии, что используется статистическая функция, обладающая математической транзитивностью, например SUM. Например, имеется набор из 6 значений: 1, 2, 3, 4, 5, 6. Если сгруппировать значения попарно, получится набор из 3 значений: 3, 7, 11. Затем можно вычислить сумму первого набора (21) и сумму второго набора (21). Суммы будут одинаковыми независимо от группирования. Если вычислить средние значения для наборов с помощью функции AVG, для каждого набора будет получен различный результат. Средним для набора из 6 значений будет 21/6 (3,5). Средним для набора из 3 значений будет 21/3 (7). Функция AVG не является транзитивной.
  • Рекомендуется выполнять анализ и оптимизацию производительности запросов в источнике данных. Например, сведения об оптимизаторе запросов для SQL Server 2005 см. в разделах Производительность запроса и Обработка одиночной инструкции SQL.
  • Определите количество данных, необходимых для диаграммы. Если для вывода сотен точек графика на мониторе применяется меньшее количество экранных точек, то производительность снижается, а качество отображения графических объектов не улучшается. Для круговой диаграммы вряд ли будет разумным использовать более 7–8 срезов.
  • Для элементов отчета с условной видимостью в обработчике отчетов необходимо применять выражения группирования, сортировки и фильтрации, даже если вначале становятся видимыми только данные верхнего уровня. Если у пользователя заинтересованность в отображении подробных данных возникает только изредка, то лучшим вариантом становится детализированный отчет. Детализированные отчеты не выполняются, пока пользователь не щелкнет ссылку детализации в главном отчете. Отчеты с углубленной детализацией или вложенные отчеты обрабатывают все данные, даже если часть данных вначале скрыта. Дополнительные сведения см. в разделе Добавление ссылок к отчету.
  • Рассмотрим создание моментальных снимков состояния выполнения отчета. Моментальный снимок отчета включает все данные отчета, получаемые для создания наборов данных в определении отчета. Дополнительные сведения см. в разделе Моментальные снимки отчета.

Большой объем сетевого трафика приводит к увеличению времени ожидания

Большие объемы данных, передаваемых в качестве сетевого трафика, могут стать причиной появления дополнительного времени ожидания для пользователя. Если известно ожидаемое число пользователей и ожидаемое количество просмотров отчета, можно выбрать подходящий метод для развертывания компонентов сервера отчетов.

Для сокращения времени ожидания рекомендуются следующие стратегии.

  • Храните базу данных сервера отчетов на том же компьютере, что и сервер отчетов.
    База данных сервера отчетов tempdb управляет данными отчета, получаемыми для каждого запроса набора данных. Чтобы сократить объем сетевого трафика, который может замедлить выполнение отчета, храните базу данных tempdb на сервере отчетов.
  • Если источником данных является хранилище данных, то хранилище данных не должно находиться на том же серверном компьютере, что и сервер отчетов.
    Получение данных с другого компьютера в сети становится дополнительной задачей при выполнении отчета, но работа хранилища данных и служб Reporting Services на одном сервере может стать причиной конкуренции за доступ к памяти и привести к снижению производительности.

Дополнительные сведения см. в разделе Планирование развертывания служб Reporting Services.

Истекает время ожидания запроса

Если время ожидания запроса к набору данных истекает до момента получения данных, можно задать время ожидания в отчете. По умолчанию это значение равно 30 секундам. Сведения о настройке значения времени ожидания для запроса набора данных см. в разделе Как создать набор данных (конструктор отчетов). Дополнительные сведения см. в разделе Установка значений времени ожидания для выполнения отчета.

Повышение производительности обработки отчетов

Обработка отчетов выполняется после получения данных для наборов данных отчета и параметров отчета. Обработчик отчетов объединяет макет отчета с данными, создавая отчет в промежуточном формате, который затем передается в модуль подготовки отчетов. Время обработки отчета может зависеть от макета отчета, постраничного просмотра и наличия сложных выражений в часто повторяющихся элементах отчета. Материал этого раздела может использоваться для повышения производительности обработки отчета.

Выбор правильной области данных

По возможности используйте области данных таблиц и списков. Обработка таблицы или списка более эффективна, чем обработка матрицы. Табличные области данных и списки поддерживают динамические элементы только для строк. Матричные макеты поддерживают динамические элементы как для строк, так и для столбцов, что создает макет более сложной структуры.

Избегайте указания общего числа страниц в колонтитулах для модулей подготовки отчетов с физическими страницами

Ссылка на глобальное поле TotalPages может снизить производительность обработки отчетов, если отчет готовится к просмотру модулем подготовки, выполняющим разбивку на физические страницы, например PDF или Image. Дополнительные сведения о модулях подготовки отчетов см. в разделе Вопросы проектирования при подготовке отчета.

Использование сложного группирования областей данных и статистических функций

При наличии большого количества уровней вложенных групп в табличной или матричной области данных производительность обработки отчета может снизиться. Рассмотрим уровень группирования, т. е. число экземпляров групп, и использование статистических функций, которые требуют вычисления после применения выражений группирования, фильтрации и сортировки.

Избегайте использования статистических функций, выполняемых после сортировки. Такие функции зависят от порядка сортировки. К ним относятся: Previous, First, Last и RunningValue. Если в выражение включается одна или несколько таких функций, обработчик отчетов должен отсортировать целевые данные перед применением функции. Там, где это возможно, избегайте включения статистических функций, выполняемых после сортировки, в выражения матричных макетов, которые содержат сложные определения групп, например несколько вложенных или смежных групп.

Оцените проект отчета и определите, нельзя ли часть статистической обработки выполнить в источнике данных. Для обеспечения приемлемой производительности может оказаться достаточным уменьшение количества данных в отчете без изменения вызовов статистических функций.

Дополнительные сведения о статистических функциях см. в разделе Использование функций отчетов в выражениях (службы Reporting Services).

Указание избыточной рекурсии в выражениях

Указывайте родительское выражение для группы, только если определяется рекурсивная иерархия, например в отчете по организации, где выводятся начальники и подчиненные. Свойство Parent применяется только к рекурсивным данным. В частности, свойство Parent не применяется к связям типа «родители-потомки» для вложенных групп.

Использование вложенных отчетов в области данных с большим числом строк

Следует учитывать преимущества и недостатки использования вложенных отчетов. Применение каждого экземпляра вложенного отчета приводит к выполнению отдельного запроса и решению отдельной задачи обработки отчета.

  • Используйте вложенные отчеты в области данных, если имеется лишь небольшое количество экземпляров вложенных отчетов.
  • Избегайте использования вложенных отчетов в группе областей данных, где содержится большое число экземпляров группы. Например, чтобы отобразить для каждого клиента и список продаж, и список возвратов, целесообразно использовать детализированные отчеты. Определите, можно ли написать запрос для соединения данных о клиентах с данными о продажах и возвратах, а затем сгруппировать полученные результаты по идентификаторам клиентов.
  • Используйте вложенные отчеты, если в них используется источник данных, отличный от источника данных, используемого в основном отчете. Если важна производительность, рекомендуется изменить запрос к набору данных в главном отчете, опираясь на одну из следующих стратегий.
    • Сбор данных в хранилище данных и использование хранилища в качестве источника данных для одного набора данных.
    • Использование связанных серверов SQL Server и запись запроса, который извлекает данные из нескольких баз данных.
    • Использование возможности OPEN ROWSET для задания различных баз данных.

Использование интерактивной сортировки

Избегайте использования кнопок интерактивной сортировки, если пользователям не нужна возможность изменить порядок сортировки данных в отчете.

Использование изображений

Изучите требования к ресурсам, необходимым для изображений.

  • Избегайте использования изображений большого размера (включая фоновые изображения). Изображения большого размера расходуют ресурсы памяти, ресурсы на обработку и подготовку к просмотру, особенно в случае, если они готовятся к просмотру в модулях подготовки, предназначенных для печати, таких как PDF, модуль печати и модуль изображений документов.
  • Избегайте передачи большого количества маленьких изображений из базы данных или с сервера, например ключевых индикаторов производительности. Такие изображения следует включать в отчет в виде внедренных изображений.
  • Для отчетов с большим количеством изображений задайте другое значение свойства AutoSize изображений, например Fit.

Конкуренция процессов за доступ к памяти на сервере отчетов

Если за одни и те же ресурсы памяти на сервере отчетов конкурируют несколько приложений, то производительность обработки отчетов может снизиться.

Проведите работу с системным администратором для обеспечения того, чтобы настройка конфигурации управления памятью была выполнена на основе модели, соответствующей потребностям сервера отчетов. Дополнительные сведения см. в разделе Настройка доступной памяти для служб Reporting Services.

Время ожидания выполнения отчета

Применительно к выполнению больших отчетов рассматриваются два вида времени ожидания, которые должны быть настроены: время ожидания выполнения отчета и время ожидания ASP.NET.

Значения времени ожидания выполнения отчета задаются на сервере отчетов. Дополнительные сведения см. в разделе Установка значений времени ожидания для выполнения отчета.

Политика времени ожидания ASP.NET контролируется при помощи файла конфигурации сервера отчетов. По умолчанию этот файл расположен в папке <drive>:\Program Files\Microsoft SQL Server\MSSQL.n\Reporting Services\ReportServer\web.config. Чтобы задать максимальную продолжительность выполнения запроса, установите время ожидания (в секундах) в элементе httpRuntime. В следующем XML-фрагменте показано, где добавляется этот элемент в файле конфигурации:

<configuration>
   . . .
   <system.web>
      . . .
      <httpRuntime executionTimeout="90"/>
      . . .
   </system.web>
   . . .
</configuration>

Для запросов с большим временем выполнения и сложных отчетов может понадобиться указать значение в несколько часов.

Повышение производительности подготовки отчетов к просмотру

Подготовка отчетов к просмотру выполняется после объединения данных и макета и передачи их в модуль подготовки. Время подготовки зависит от объема данных, количества элементов отчета и размеров страницы. Модуль подготовки отчетов определяет, сколько данных размещается на каждой странице. В различных модулях подготовки используются различные определения страниц. В модуле подготовки Excel страницей является лист. В модуле подготовки отчетов PDF, который поддерживает печать отчета, используется физическая страница. В средстве просмотра HTML-страниц весь отчет может располагаться на одной странице. Структура отчета для печатной страницы может отличаться от структуры отчета для просмотра в обозревателе. Если ожидается, что пользователи будут просматривать отчет в определенном формате, настройте отчет для этого формата. Дополнительные сведения см. в разделе Вопросы проектирования при подготовке отчета.

В следующей таблице приводятся рекомендации по повышению производительности обработки отчетов.

Формат подготовки к просмотру Описание

Все

  • По возможности избегайте повторения колонтитулов для области данных, занимающей несколько страниц. Сюда относятся колонтитулы страниц и групп для табличной области данных, матричной области данных и списка.
  • Для отчетов с большим числом текстовых полей установите свойства CanGrow и CanShrink текстовых полей в значение False. По умолчанию каждая ячейка в табличной или матричной области данных содержит текстовое поле, для которого свойство CanGrow имеет значение True. Если в таблице или матрице содержится большое число строк или столбцов, количество текстовых полей увеличивается очень быстро.
  • По возможности не устанавливайте свойство KeepTogether для табличных областей данных, матричных областей данных и списков. Если свойство KeepTogether имеет значение True, обработчик отчетов должен определить, может ли вся область данных разместиться на одной странице, а затем выбрать, какую страницу использовать.
  • Если с помощью списков создаются отчеты в свободной форме, используйте прямоугольники в качестве контейнеров для группирования текстовых полей. Контейнеры помогают модулям подготовки определить, какие данные могут разместиться на странице.
  • Обычно диаграммы готовятся к просмотру в виде изображений. Избегайте размещения диаграмм в таблице или матрице, содержащей несколько тысяч строк. Когда такие отчеты готовятся к просмотру в средстве просмотра HTML-страниц, при получении обработчиком отчетов каждого изображения диаграммы с сервера отчетов расходуются ресурсы. При обработке в других форматах для таких отчетов должны создаваться изображения каждой диаграммы в выходном формате, что увеличивает размер выходных файлов и повышает продолжительность подготовки к просмотру.
    Создавайте диаграммы с учетом выбранного модуля подготовки отчетов. На мониторе не нужно использовать то же разрешение, что и для печатной страницы. Например, для PDF-файла по умолчанию задается разрешение в 300 точек на дюйм. Его можно изменить в настройках сведений об устройстве для модуля подготовки отчетов PDF. При этом чем больше разрешение, тем больше необходимый объем памяти.
    Dd353300.note(ru-ru,SQL.90).gifПримечание.

Excel

  • Добавьте разрывы страниц там, где это имеет смысл. Каждый разрыв страницы определяет новый лист. Каждый лист поддерживает не более 65 536 строк. Дополнительные сведения см. в разделе Как добавить разрыв страницы (конструктор отчетов).
  • Выравнивайте элементы отчета по вертикали. Модуль подготовки Excel добавляет дополнительные ячейки там, где это необходимо для выравнивания границ элементов отчета в области конструктора отчета. Это приводит к созданию объединенных ячеек в листе Excel. Чтобы избежать появления объединенных ячеек, выравнивайте границы элементов отчета по вертикали относительно столбцов таблиц и матриц. Чтобы избежать ошибок округления, которые происходят, когда значения задаются в дюймах (in) и долях дюймов, указывайте значения в пунктах (pt). По умолчанию в Excel используются пункты.
  • Не задавайте в свойстве TextAlign текстовых полей значение General. Это значение требует применения условной обработки с учетом содержимого текстового поля.

HTML

  • Для больших отчетов не устанавливайте свойство InteractiveHeight в значение 0. Модули подготовки HTML неэффективно работают с HTML-страницами очень большого размера. Если свойство InteractiveHeight имеет значение 0, то весь отчет считается одной страницей.

PDF

Изображение

TIFF

Печать

  • Избегайте горизонтальных разрывов страниц. Чтобы удалить лишние страницы, добавляемые по горизонтали, проверьте размеры полей, значения ширины столбцов и пробелы в отчете. Обработчик отчетов сохраняет пробелы, которые отображаются в области конструктора отчета. Чтобы проверить изменения, экспортируйте отчет в TIFF-файл и просмотрите его в программе просмотра изображений и факсов Microsoft Windows.
  • Избегайте включения в колонтитулы страницы ссылки на встроенное поле TotalPages. Модули подготовки отчетов, которые отображают отчеты на физических страницах, должны будут обрабатывать отчет с таким значением дважды: первый раз — чтобы определить общее число страниц, а второй — чтобы подготовить каждую страницу к просмотру с правильным значением.
  • По возможности не устанавливайте свойство RepeatWith элементов отчета в значение True для отчетов, которые занимают несколько страниц по горизонтали.
  • Убедитесь, что размер страницы имеет разумное значение, например 8,5 дюйма.

При возникновении проблем с подготовкой отчета в некотором формате выберите формат, приводящий к созданию файла меньшего размера (например, CSV). Для опубликованного отчета формат подготовки к просмотру можно указать в URL-адресе. Дополнительные сведения см. в разделе Specifying a Rendering Format in a URL.

Если из-за недоступности панели инструментов отчета другой формат выбрать нельзя, то можно определить подписку, чтобы задать формат подготовки и доставлять отчет как статический документ в общую папку. Дополнительные сведения см. в разделе Доставка в общую папку с помощью служб Reporting Services.

См. также

Основные понятия

Файлы журнала служб Reporting Services
Обработка больших отчетов

Другие ресурсы

Устранение неполадок в службах Reporting Services
Ошибки и события служб Reporting Services
Устранение неполадок отчетов

Справка и поддержка

Получение помощи по SQL Server 2005