SQL Server odwoływanie się do tej samej procedury przez wiele wątków wydajność

0

Witam
Mam następujący problem związany z wydajnością bazy danych. Mam system, który generuje raport z procedury. Procedura wykorzystuje parametry daty. Innymi słowy chcemy dane od marca do lipca, to procedura odpowiednio wybiera dane z różnych tabel. Niestety wydajność tego jest bardzo słaba. Siłą rzeczy coś musimy z tym zrobić, zasugerowałem zbudowanie hurtowni danych i trzymanie tam wyników z roku, wtedy raporty operowałyby na już przetworzonych danych pod raporty.

Innym rozwiązaniem na które wpadłem dzisiaj jest podzielenie w aplikacji na kilka wątków i oddzielenie każdego wątku do np. miesiąca, tygodnia. Inaczej ujmując każdy wątek odnosi się do tej samej procedury, ale do innego okresu czasu. Potem te wyniki byłby składane. Pytanie na ile takie rozwiązanie jest wydajne ? To oczywiście taka luźna myśl. Chciałbym tylko usłyszeć od bardziej doświadczonych kolegów jakichś pomocnych rad.

Pozdrawiam

1

Jak mierzyłeś wydajność? To nie jest temat na 5 minut, obawiam się że bez znajomości struktur, danych i samej procedury nic sensownego nie doradzimy.
To moze być kwestia indeksów, obciążenia danych w tle, nieoptymalnie zapisanych zapytań itd.

0

Jezeli chodzi o watki, to tak, podniosa wydajnosc, bo wszystko bedzie przetwarzane rownoczesnie.

Jezeli mozesz to pokaz:
-Zapytanie
-"Actual Execution Plan"-pokaze nam to co najwiecej czasu zajmuje
-Strukture tabel- indeksy, klucze, typy danych

Pozdrawiam

1

NAJPIERW! należy zobaczyć jak wygląda plan zapytania i poprawić zapytanie/dodać indeksy. Jak to nie pomoże to wtedy można się zastanawiać co dalej.

Pytanie podstawowe ile tych danych jest w sumie i ile z tego wybiera taki raport. Jak bardzo skondensowany jest raport w stosunku do danych wejściowych (np. z 10000 faktur za okres 1 miesiąca mamy w raporcie jeden wiersz z 30 kolumnami). Prostym i szybkim do realizacji pomysłem jest utworzenie dodatkowej tabeli i uzupełnianie jej triggerami w momencie dodawania nowych danych (oczywiście "stare" dane trzeba tam jednorazowo wrzucić) - to tak prostsza i "biedniejsza" wersja hurtowni danych.

a co do kilku wątków to się może okazać, że wynikowo wcale nie jest lepiej a wręcz gorzej - nie wiem co tam macie za sprzęt i jak fizycznie dane są na dyskach rozlokowane ale głównie podczas takich operacji używane są dyski (odczyt danych) i pamięć (łączenie, sortowanie) i tego Ci nie przybędzie od podziału na wątki

1 użytkowników online, w tym zalogowanych: 0, gości: 1