S K.

S K. serwisant

Temat: Zatwierdzanie zamówień - długi czas oczekiwania

Witam.
Mam problem z zatwierdzaniem zamówień.
Otóż po kliknięciu zatwierdź trzeba czekać po 6-7 sekund na zatwierdzenie zamówienia. W "SQL Profiler" podczas wykonywania tej procedury (RM_ZatwierdzZamowienie) pojawia się bardzo duża liczba czytań "Reads", dochodząca nawet do 3mln, kiedy w innych przypadkach to stosunkowo niewielkie ilości.

W przypadku innych dokumentów takich problemów nie ma.

Baza jest całkiem spora (około 15gb), zdarza się, że pracuje na niej równocześnie około 30 użytkowników. Najgorzej jest w momencie, kiedy 2-3 osoby chcą zatwierdzić swoje zamówienia w tym samym czasie - pojawiają się błędy typu deadlock. Odbudowa indeksów wykonywana co tydzień, aktualizacja statystyk codziennie.

Jakieś wskazówki, porady jak dojść do przyczyny? Rozwiązania?Sebastian K. edytował(a) ten post dnia 18.10.11 o godzinie 13:48
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: Zatwierdzanie zamówień - długi czas oczekiwania

czy przypadkiem na bazie nie pracuje jakiś zewnętrzny soft typu sklep internetowy ?
S K.

S K. serwisant

Temat: Zatwierdzanie zamówień - długi czas oczekiwania

Owszem, pracuje (T-SYSTEM?), to był mój pierwszy strzał w kwestii rozwiązania problemu. Jednak po wyłączeniu tego systemu, problem nie znika. Chyba że system zamówień dokonuje jakiś zmian w strukturze, co raczej nie występuje.
Adam Polech

Adam Polech Główny Architekt
Oprogramowania,
Asseco Business
Solution...

Temat: Zatwierdzanie zamówień - długi czas oczekiwania

Proszę sprawdzić ile jest rekordów zamówień i pozycji w tabelach zamowienie i pozycja_zamowienia.
Jeżeli idzie to w miliony to może warto wykasować stare zrealizowane zamówienia.
Jaka wersja programu jest używana?
S K.

S K. serwisant

Temat: Zatwierdzanie zamówień - długi czas oczekiwania

W tabeli zamowienie ok. 40 tys. rekordów, pozycja_zamowienia to jakieś 300 tys. rekordów, więc nie są to chyba straszne ilości. Tabele dot. dokumentów magazynowych zawierają zdecydowanie większą liczbę rekordów, ale zapisują się w porównaniu do zamówień ekspresowo.
Wersja 7.60.8, jednak problem występuje już jakiś czas od wersji 7.60.2.
Adam Polech

Adam Polech Główny Architekt
Oprogramowania,
Asseco Business
Solution...

Temat: Zatwierdzanie zamówień - długi czas oczekiwania

Ilości rekordów faktycznie są małe i nie powinno być takich opóźnień.
Może ktoś dopisał jakieś własne triggery?, np. na insert albo update na tabeli pozycja_zamowienia albo zamowienie?
Zalecam kontakt z serwisem.
Dariusz Sobala

Dariusz Sobala Black House sp. z
o.o.

Temat: Zatwierdzanie zamówień - długi czas oczekiwania

Witam

Proponuję porównać strukturę bazy z bazą wzorcową. W szczególności chodzi mi o ilość oraz strukturę indeksów. Najwygodniej czymś w stylu:

http://stackoverflow.com/questions/765867/list-of-all-...

Być może w wyniku takiej niezgodności aparat "przekopuje" bazę na piechotę ?

Nie wiem czy przeprowadzenie ponownej aktualizacji struktury przy pomocy administratora baz danych naprawi błąd niezgodności np. kolumn w indeksie, warto spróbować.
S K.

S K. serwisant

Temat: Zatwierdzanie zamówień - długi czas oczekiwania

Znalazłem problem. Rzeczywiście był dopisany trigger na update tabeli 'Zamowienia', który jakoś wcześniej przeoczyłem. Celem było, by przy zapisaniu zamówienia z pola dodatkowego kontrahenta była przenoszona wartość na pole dodatkowe w zamówieniu. Trigger działał, ale przy zapisie zamówienia wykonywał upadate dla każdego wiersza tabeli, dlatego tak długo trwała praca na zamówieniach.
Czy ktoś mógłby pomóc w napisaniu takiej funkcji, by przy zapisie zamówienia dokonywał się update pola, ale tylko przy tym wierszu konkretnego zapisywanego zamówieniu, a nie dla całej tabeli? Gniazda rozszerzeń? A może w danym "Polu dodatkowym" zamówienia ustawione jako "Pole wyliczane i zwracane funkcją SQL"?
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: Zatwierdzanie zamówień - długi czas oczekiwania

funkcja SQL raczej nic nie da bo ona pokazuje się tylko w momencie otwierania danego pola w browserze, nie jest prezentowana na liście.
Gniazda rozszerzeń mogłyby się nadać na akcję zatwierdzania/poprawiania pozycji albo całego dokumentu tak aby działały tylko dla tego konkretnego zamówienia.
Trigger pewnie by trzeba poprawić/zabezpieczyć na if update na konkretną kolumnę i tylko tak aby sięgał do inserted dla kontekstu tego konkretnego dokumentu.
S K.

S K. serwisant

Temat: Zatwierdzanie zamówień - długi czas oczekiwania

Poradziłem sobie za pomocą gniazda rozszerzeń, krótką funkcją SQL, działającego przed zatwierdzeniem zamówienia.
Dziękuję za wypowiedzi, które naprowadziły mnie i pomogły w końcu pozbyć się uciążliwego błędu.



Wyślij zaproszenie do