25.06.2011, 19:37 | #1 |
Участник
|
SSRS резкая деградация производительности.
Отчет SSRS использует хранимую процедуру MS SQL. Пока отчет вызываю даже не из Аксыи не из IE, а с помощью MS Visual Studio.
Хранимая процедура создает временную таблицу, заполняет её несколькими запросами из InventTrans. В конце процедуры производится выборка из этой временной таблицы и таблица удаляется. Первые 2-3 запуска отчета работают в соответствии с теорией (при первом запуске производится построение планов запроса, кэшируется запрос ит.п.), в итоге, первый запуск отрабатывает за 3,5 минуты, второй и третий за две - две с небольшим минуты. А вот последующие запуски выполняются все медленнее и медленнее. Так 5-6 запуск отрабатывает за 6-8 минут, а десятый вообще вылетает по таймауту. (с одними и теми же параметрами). Сначала я грешил на сам SSRS и Visual Studio. Но, переписал хранимую процедуру на простой скрипт и получил ту же самую ситуацию: второй-третий запуск работают быстрее, чем первый, а далее резко падает производительность. После перезапуска сервера MS SQL опять первые запуски работают как положено, а последующие тормозят. Может быть кто-то сталкивался с таким поведением и знает рецепты? |
|
27.06.2011, 09:19 | #2 |
----------------
|
я бы посмотрел, что творится с tempdb и диском, где она лежит.
|
|
|
За это сообщение автора поблагодарили: Raven Melancholic (2). |
27.06.2011, 09:50 | #3 |
Участник
|
Может попробовать использовать
- не процедуру, а функцию и - не временную таблицу, а табличную переменную? Где-то читал, что МС рекомендует пользовать именно табл. переменные.
__________________
Axapta 3.0 sp - хз какой, kr2 |
|
|
За это сообщение автора поблагодарили: Raven Melancholic (5). |
27.06.2011, 14:17 | #4 |
Участник
|
А если в определение процедуры добавать опцию WITH RECOMPILE чтобы исключить влияние ранее рассчитанного плана?
|
|
|
За это сообщение автора поблагодарили: Raven Melancholic (2). |
27.06.2011, 14:38 | #5 |
Участник
|
|
|
27.06.2011, 14:38 | #6 |
Участник
|
|
|
27.06.2011, 14:39 | #7 |
Участник
|
|
|
27.06.2011, 15:37 | #8 |
----------------
|
вспомнил одну историю...
Давным давно, в Перекрестке на SQL 2000 была такая же проблема. Тогда причину найти не удалось и сделали затычку. При работе процедурка писала в специальную табличку длительность своей работы, и когда этот параметр вылезал за определенное значение автоматически запускался RECOMPILE процедуры. |
|
Теги |
reporting services, производительность |
|
|