2015-12-17 35 views
5

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.

+0

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. –

+1

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. –

+0

jak o zwiększaniu limitu czasu http://geekswithblogs.net/ssrs/archive/2009/10/30/steps-to-resolve-ssrs-timeout-issues.aspx – niketshah90

Odpowiedz

6

Domyślnie zestawy danych w SSRS są wykonywane równolegle.

przypadku wszystkich zestawów danych odnoszą się do tego samego źródła danych, można skonfigurować na odcinkach realizacji zbiorów danych na jednego połączenia w ten sposób:

  • otworzyć okno źródła danych w raporcie projektanta
  • zapewnić że Użyj pojedynczego transakcja pole jest zaznaczone

Gdy to pole jest zaznaczone, zestawy danych, które używają tego samego źródła danych nie są już wykonywane równolegle.

Mam nadzieję, że rozwiąże to Twój problem.

+1

Dzięki. Nie widziałem tego. Niestety, spowolniło to. Właśnie uruchomiłem wszystkie 4 procedury w SSMS na jeden dzień dla jednego z parametrów i powrócił w 7 sekund. Powinien zwracać tylko 4 wiersze do SSRS. Kiedy używam tej zmiany, upływa limit czasu. Nie mam pojęcia, dlaczego ... SSMS ma 7 sekund. Jest to jednak właściwa odpowiedź, niezależnie od mojego problemu z wydajnością, która prawdopodobnie nie wynika z tej opcji. – Fastidious

+0

Fakt, że zwracane są tylko 4 wiersze, neguje sugestię podaną we wcześniejszym komentarzu dotyczącym czasu renderowania. Byłbym wdzięczny za przyjęcie, ale jeśli nie, rozumiem. –

+0

Tak, żadnych problemów. – Fastidious