SSRS Performance Mystery - PullRequest
       6

SSRS Performance Mystery

8 голосов
/ 22 декабря 2011

У меня есть хранимая процедура, которая возвращает около 50000 записей за 10 секунд, используя не более 2 ядер в SSMS.Отчет SSRS с использованием хранимой процедуры занимал 20 минут и максимально загружал процессор на 8-ядерном сервере за все время.Отчет был относительно простым (т.е. без графиков, расчетов).Отчет, похоже, не был проблемой, так как я записал 50К строк во временную таблицу, и отчет мог отображать данные в течение нескольких секунд.Я пробовал много разных идей для тестирования изменения хранимой процедуры каждый раз, но оставил исходный код в отдельном окне, чтобы вернуться к нему.После одного изменения хранимой процедуры, возвращаясь к исходному коду, отчет и использование сервера начали работать быстро, сравнимо с производительностью одной хранимой процедуры.Пока все хорошо, но я бы хотел разобраться с тем, что вызвало это, если это случится снова.Есть идеи?

Ответы [ 2 ]

0 голосов
/ 29 июня 2013

Основным решением для ускорения отчетов SSRS является кэш отчетов.Если кто-то это сделает (например, моя предварительная загрузка кеша в 7:30 утра) или кеширует отчеты при ударе, он обнаружит значительное увеличение скорости загрузки.

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

Обратите внимание, что Я делаю это ежедневно и профессионально , и я не просто расточаю поэтическую мысль о SSRS

Кэширование вSSRS http://msdn.microsoft.com/en-us/library/ms155927.aspx

Предварительная загрузка кэша http://msdn.microsoft.com/en-us/library/ms155876.aspx

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

Наконец, , вы также можете выбрать, чтобы бизнес-менеджеры вместо этого получали эти отчеты через почтовые подписки , которые отправят им отчет Excel на определенный момент времени, который они могут найтипроще и систематичнее.

Вы также можете использовать параметры в SSRS для упрощения анализа пользователем и ускорения запросов.В построителе запросов введите IN (@SSN) в столбце «Фильтр», который вы хотите параметризовать, вы обнаружите, что он создан в папке параметров чуть выше источников данных в верхнем левом углу графического интерфейса BIDS.[Если вы не видите раздел источника данных в SSRS, нажмите CTRL + ALT + D.

См. Почти идентичный вопрос здесь: Проблемы производительности с SSRS

0 голосов
/ 29 декабря 2011

Я бы начал с трассировки SQL Profiler как хранимой процедуры, когда вы выполняете ее нормально, так и того же SP, когда она вызывается SSRS.Убедитесь, что вы включили соответствующие планы выполнения, чтобы вы могли видеть, принимает ли он какие-то неверные решения (хотя это кажется маловероятным - SQL Server должен выполнить оптимальный - или, по крайней мере, согласованный - план независимо от источника запроса).1002 * У нас были случаи, когда Business Objects десятки раз выполнял хранимые процессы без видимой причины, что иногда приводило к ужасной производительности, хотя я никогда не видел такого поведения с SSRS.Это может быть где-то начать, хотя.Вы также увидите время начала / окончания выполнения - это будет ясно, если зависает слой базы данных или если SQL Server возвращает данные в течение 10 секунд, а затем служба SSRS где-то задыхается.

...