Tomasz
Lenart
informatyk, zoZ
kluczbork
Temat: wydajność wf-mag (7.31.2) a funkcja...
Podczas przyjmowania towaru na stan magazynu wf-mag wraz ze wzrostem pozycji wyraźnie spowalnia tzn. każda nowa dodana pozycja ładuje się coraz dłużej. Przy 40 pozycjach czas dodania ostatniej pozycji wynosi około 10-12s.Charakterystyczne jest to na serwerze sql obciążenie procesora sięga 50% (tzn obciążany jest maksymalnie jeden z rdzeni procesora - mssql 2005 widocznie nie obsługuje 2 rdzenia przynajmniej w tej wersji) natomiast dysk nie wykonuje praktycznie żadnych operacji (kolejka w monitorze wydajność ma wartosc 0).
Wniosek jest oczywisty, serwer bazy posiada w ramie to co jest mu potrzebne do wykonania zapytania wiec nie musi czytac a dostepność danych powoduje maksymalne wykorzystanie procesora. Wszystko było by pięknie gdyby to obciazenie trwalo ułamek sekundy trwa natomiast kilkanaście sekund przy dodaniu 40-stej pozycji. Zastanawia mnie taka rzecz dlaczego spowolnienie rośnie wraz ze wzrostem pozycji na dokumencie przecież zawsze dodajemy pojedyncza pozycje do już istniejących. Aby dojsc sedna sprawy wykorzystałem sqlserverprofiler do zrobienia trace i podejrzenia tego co robi serwer sql.
Okazuje sie że wraz ze wzrostem pozycji rosnie liczba wywołań funkcji dbo.AP_Func_PobierzCeneArtKontrZOstDok() ktora jak mi sie wydaje jest odpowiedzialna za te makabryczne działanie. Może ktoś z państwa wie jak to poprawic. Moze da się coś z tym zrobić, może była na to jakaś łata.
Podejrzewam ze jest to funckja składowana w bazie i teoretycznie mógłbym ją zmodyfikować ale nie chce tak głęboko sięgać.
Jeszcze jedna informacja narzędzie trace w kolumnie "reads" dla tej funkcji pokazuje wartosc w okolicach 272000, przy innych wywoływanych pytaniach lub funkcjach pojawia sie wartosci z przedzialu od 0-100.
Pozdrawiam
Tomek