Skocz do zawartości

Parametry specyficzne - powolne pobieranie

Polecane posty

Czy dałoby się jakoś zoptymalizować i w efekcie przyspieszyć pobieranie parametrów specyficznych dla kategorii?

 

Zrobienie raz na jakiś czas "globalnego" pobierania parametrów jeszcze jakoś ujdzie (nie sobie trwa jak musi), ale pobieranie parametrów w trakcie dodawania produktu do aukcji z włączoną opcją pobierania "Kategorii i parametrów" jest już dość upierdliwe.

 

Jeżeli pobrane parametry są w miarę "świeże" to operacja przebiega w szybko i sprawnie, ale jeżeli już się trochę zleżały (a wystarczy kilka ledwie kilka dni) to trwa to kilka dobrych minut za każdym razem. Co dziwne, ta operacja strasznie obciąża procesor bazy danych - danych jest pobieranych z sieci niewiele, ale proces serwera coś strasznie mieli przez te kilka minut.

 

Chyba, że to u mnie w bazie danych coś się nawarstwiło i teraz serwer musi się przekopywać przez jakieś złogi... ??? Tabela st_CategorySpecificDict ma ponad 500 tys. pozycji.

Link to postu

Problemem jest w zasadzie jeden parametr (prawdopodobnie), producent/marka. O ile dobrze pamiętam w tym parametrze jest ponad 10 tys. różnych wartości i każdorazowo Sello aktualizując ten parametr musi zsynchronizować słownik zapisany w bazie i ta operacja po prostu trwa. 

Pewne optymalizacje już tam robiliśmy i przyspieszyliśmy to wielokrotnie, ale były one robione w momencie gdy w parametrze tym było 4 tys. wartości. 

 

Podeślij proszę jakieś przykładowe numery kategorii w których to występuje, zobaczymy jak to u nas działa i czy da radę coś z tym zrobić.

 

W dniu 26.10.2022 o 19:24, Konrad L napisał:

Tabela st_CategorySpecificDict ma ponad 500 tys. pozycji.

No, jeśli jeden parametr z marką ma 13tys pozycji to wystarczy kilkadziesiąt takich parametrów żeby dobić do miliona :|.

 

Jedno z rozwiązań jakie rozważaliśmy to było nie analizowanie zmian i różnic (nie synchronizowanie słownika) tylko usunięcie danych słownika i wpisanie ich na nowo. Ale to z kolei po niedługim czasie spowodowałoby przekręcenie się licznika identyfikatorów w bazie - a co się wtedy stanie to nie wiem :). Na pewno nic miłego.

 

 

Link to postu
18 godzin temu, Bartosz Rosa napisał:

No, jeśli jeden parametr z marką ma 13tys pozycji to wystarczy kilkadziesiąt takich parametrów żeby dobić do miliona :|.

 

A może - jeśli się na razie nie da tego normalnie obejść - dodać opcję (jeśli to możliwe) pobierania w tle (kiedy Sello jest bezczynne) tylko opcji 'Marka' do np. kategorii z aukcji trwających? Nie wiem czy to możliwe... I ustawianie tego procesu np. co X dni...

 

Edycja 1 aukcji to rzeczywiście problem, gdy trzeba czekać ...naście minut... Ale ostatnio to pobieranie ubijam (przerwij) i jakośc potem udaje się wybrać prawidłowe parametry w aukcji. Czy może to oznaczać, że coś się 'wiesza' w interfejsie Sello? (samo 'przerwij' to też oczekiwanie z minutę...)

Link to postu
  • 2 tygodnie później...

Przerwij działa tak, że umożliwia przerwanie po zakończeniu wykonania aktualnego zadania. Jeśli zadań jest np 10, to po każdym z 10 kroków można przerwać. Natomiast jeśli samo zadanie trwa minutę - a tak jest tutaj, to przerwanie zadziała ale po tej minucie (po zakończeniu aktualnego zadania).

Link to postu
W dniu 28.10.2022 o 14:57, Bartosz Rosa napisał:

Problemem jest w zasadzie jeden parametr (prawdopodobnie), producent/marka. O ile dobrze pamiętam w tym parametrze jest ponad 10 tys. różnych wartości i każdorazowo Sello aktualizując ten parametr musi zsynchronizować słownik zapisany w bazie i ta operacja po prostu trwa. 

Pewne optymalizacje już tam robiliśmy i przyspieszyliśmy to wielokrotnie, ale były one robione w momencie gdy w parametrze tym było 4 tys. wartości. 

W ramach eksperymentów dodałem do tej tabeli index na pola csd_ExtId i csd_Position i to znacznie poprawiło sytuację. Czas synchronizacji parametrów produktu do oferty z kilku minut skrócił się do kilku(nastu) sekund. Kosztowało to co prawda 40MB miejsca, ale trudno.

W dniu 28.10.2022 o 14:57, Bartosz Rosa napisał:

Podeślij proszę jakieś przykładowe numery kategorii w których to występuje, zobaczymy jak to u nas działa i czy da radę coś z tym zrobić.

Kręcę się głównie w zabawkach (np. 321435) i grach (np 6106). Ale generalnie to się zachowuje trochę dziwnie. Pierwsza aktualizacja parametrów dla danej kategorii trwa długo, natomiast kolejne idą już szybciej. Inna kategoria i znów trzeba poczekać dłużej. Czasem po kilku godzinach a czasem dniach znowu potrzebuje więcej czasu na zaktualizowanie parametrów dla danej kategorii. Jakby dane trafiały do jakiegoś cache i póki tam siedzą to działało szybciej.

W dniu 28.10.2022 o 14:57, Bartosz Rosa napisał:

No, jeśli jeden parametr z marką ma 13tys pozycji to wystarczy kilkadziesiąt takich parametrów żeby dobić do miliona :|.

 

Jedno z rozwiązań jakie rozważaliśmy to było nie analizowanie zmian i różnic (nie synchronizowanie słownika) tylko usunięcie danych słownika i wpisanie ich na nowo. Ale to z kolei po niedługim czasie spowodowałoby przekręcenie się licznika identyfikatorów w bazie - a co się wtedy stanie to nie wiem :). Na pewno nic miłego.

Sprawdźcie, proszę, czy ten index nie będzie miał jakichś negatywnych konsekwencji, bo może to wystarczy żeby porzucić temat do czasu Sello NX. I jeżeli nie będzie problemów i może zostać, to żeby nie znikał przy konwersji bazy przy okazji aktualizacji Sello.

  • Lubię to 1
Link to postu
21 godzin temu, Konrad L napisał:

Ale generalnie to się zachowuje trochę dziwnie. Pierwsza aktualizacja parametrów dla danej kategorii trwa długo, natomiast kolejne idą już szybciej. Inna kategoria i znów trzeba poczekać dłużej. Czasem po kilku godzinach a czasem dniach znowu potrzebuje więcej czasu na zaktualizowanie parametrów dla danej kategorii.

Działa to tak ze względu na optymalizację, którą tam zastosowaliśmy. Parametr ten jest aktualizowany tylko gdy wystąpi różnica pomiędzy tym co jest w bazie a tym co zwraca Allegro, dlatego pierwsza synchronizacja trwa długo, kolejne szybko do czasu aż zmieni się lista producentów w Allegro.

 

21 godzin temu, Konrad L napisał:

czy ten index nie będzie miał jakichś negatywnych konsekwencji

Konsekwencje indeksu są tylko takie, że dłużej trwa zapis danych, zaś odczyt jest znacznie przyspieszony. Natomiast jeśli tutaj on pomógł to oznacza, że problem z wolną aktualizacją nie leży w kodzie, który porównuje słownik zapisany w bazie ze słownikiem w Allegro, tylko w samym odczycie tych danych z bazy - zapewne z racji liczby wpisów w tej tabeli.

Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...