Próbuję zoptymalizować raport, który używa wielu procedur przechowywanych w tej samej tabeli. Niestety, każda procedura czyta miliony rekordów i agreguje wyniki. Jest to bardzo intensywny odczyt dla raportu, ale każda procedura przechowywana jest zoptymalizowana do szybkiego uruchamiania w systemie SSMS.Czy usługa SSRS uruchamia wiele zapytań naraz?
Mogę uruchomić każdą zapisaną procedurę i uzyskać zestaw wyników w ciągu 10 do 20 sekund. Kiedy umieszczam je wszystkie w jednym raporcie w SSRS, raport wygasa.
Łącznie 4 parametry na procedurę składowaną. Wszystkie kierowane są na tę samą tabelę, po prostu agregując dane na różne sposoby. Indeksy w tych tabelach są zgodne z zapytaniem. Opiera się na czasie, użytkowniku i jednym wymiarze, którego używam do COUNT() DISTINCT i NONDISTINCT.
Myślę, że problem polega na tym, że SSRS uruchamia 4 procedury jednocześnie przy tym samym stole, a nie po kolei. Czy to prawda? Jeśli tak, to czy mimo to SSRS nie uruchamia ich równolegle?
Moja jedyna opcja to utworzenie tabeli podsumowania, która jest już wstępnie posegregowana. Następnie po prostu wygeneruj raport z tego stołu. W przeciwnym razie, myślę, że możliwe jest również sniffowanie param.
Czy można naśladować działanie w środowisku nieprodukcyjnym i uruchomić śledzenie profilu? To by powiedzieć, co działa równolegle. Inną opcją jest regularne odświeżanie, aby raport był gotowy do pracy. –
Widziałem sytuacje, w których krok renderowania jest fragmentem potoku, który zajmuje tak dużo czasu i jest odpowiedzialny za przekroczenie limitu czasu. Nie twierdzę, że jest to zdecydowanie w twoim przypadku, po prostu mówię, że jest to możliwe wytłumaczenie dla szybkiej realizacji w SSMS i bardzo powolne w SSRS. –
jak o zwiększaniu limitu czasu http://geekswithblogs.net/ssrs/archive/2009/10/30/steps-to-resolve-ssrs-timeout-issues.aspx – niketshah90