|  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, производительность | 
|  | 
| 
 |