Skocz do zawartości

Czyszczenie bazy (tabeli AsortymentyHistoria).

Polecane posty

Bawiąc się Subiektem, a później bazą, dowiedziałem się, że przy każdej najmniejszej modyfikacji Asortymentu (tabela w bazie: Asortymenty), tworzony jest Snapshot w tabeli AsortymentyHistoria.

Dokumenty zachowują referencję do aktualnego Asortymentu oraz snapshota przedstawiającego ten asortyment za czasów wystawienia dokumentu. Rozwiązanie całkiem logiczne bo zachowuje poprawność dokumentu.

 

Moje pytanie to czy istnieje jakiś bezpieczny skrypt, który by przeczyścił AsortymentyHistoria z nieużywanych rzędów (czyli takich które nie są użyte w żadnym dokumencie, a jedynie stanowią historię zmian)?

Ew. możliwe wskazówki gdzie patrzeć, żebym nie rozwalił pisząc to sam, bo tutaj ciężko mowa o dokumentacji.

Przyczyna (dla ciekawych): Na przestrzeni kilku miesięcy ciągłych globalnych (i wielokrotnie powtarzających się) zmian w opisach asortymentów wygenerowało mi się przynajmniej kilkadziesiąt tysięcy rzędów syfu (jak nie kilkaset, bo jeszcze nie wiem, które można bezpiecznie usunąć), który nijak jest używany przez program. Nie dość, że to duże to całkiem możliwe, że spowalnia program.

 

P.S. Moim zdaniem snapshot powinien się tworzyć przy powstaniu pierwszego dokumentu z niego korzystającego, a nie zawsze (możliwie, że się mylę bo badałem powierzchownie). :P

Edytowane przez Ernest Sadowski
Link to postu

Z moich analiz, oczywiście podobnie jak Pana, nieoficjalnych, wynika coś innego :)

Ta tabela nie ma wpływu na wydajność w pracy na co dzień, ponieważ odwołania do tej tabeli tyczą w sumie dokumentów i to tych historycznych. Mamy w bazie 144443 takich wpisów i żyje :) Oczywiście, pytanie co rozumiemy przez wydajność, bo o milisekundy się nie kłócimy? ;)

7 godzin temu, Ernest Sadowski napisał:

P.S. Moim zdaniem snapshot powinien się tworzyć przy powstaniu pierwszego dokumentu z niego korzystającego, a nie zawsze (możliwie, że się mylę bo badałem powierzchownie).

No niekoniecznie. Proszę Sobie wyobrazić, że sprzedaje Pan produkt A przez cały rok, w międzyczasie zmieniając jego nazwę kilka razy. Wpada urząd skarbowy na kontrole i prosi o wszystkie faktury, robi Pan ładnie wydruk z NEXO, no i na fakturach jest zawsze taka nazwa asortymentu, jaką dostarczył Pan do klienta, podobnie jest też z danymi klienta, które są w podobnej tabeli trzymane. Po to jest zapewne ten zapis :)

PS. Miło, że dołączył nowy użytkownik, który próbuje też mieć wpływ na rozwój programu ;)

Edytowane przez Radomił Ząbik
PS
Link to postu
1 godzinę temu, Radomił Ząbik napisał:

Z moich analiz, oczywiście podobnie jak Pana, nieoficjalnych, wynika coś innego :)

Ta tabela nie ma wpływu na wydajność w pracy na co dzień, ponieważ odwołania do tej tabeli tyczą w sumie dokumentów i to tych historycznych. Mamy w bazie 144443 takich wpisów i żyje :) Oczywiście, pytanie co rozumiemy przez wydajność, bo o milisekundy się nie kłócimy? ;)

A no to się uspokoiłem. To był strzał na ślepo.

1 godzinę temu, Radomił Ząbik napisał:

No niekoniecznie. Proszę Sobie wyobrazić, że sprzedaje Pan produkt A przez cały rok, w międzyczasie zmieniając jego nazwę kilka razy. Wpada urząd skarbowy na kontrole i prosi o wszystkie faktury, robi Pan ładnie wydruk z NEXO, no i na fakturach jest zawsze taka nazwa asortymentu, jaką dostarczył Pan do klienta, podobnie jest też z danymi klienta, które są w podobnej tabeli trzymane. Po to jest zapewne ten zapis :)

To właśnie miałem na myśli mówiąc, że snapshot mógłby powstawać przy pierwszym użyciu (a nie każdej edycji, gdzie np. 10 razy edytujemy obiekt, bez wystawiania dokumentów, bo ciągle zmieniamy zdanie jak ma być opisany). Zwykle się to robi tak, że niezależnie od ilości edycji Obiekt się UPDATUJE (i ustawia jakąś flagę jako nie-snapshotowany) a dopiero gdy zostanie użyty po raz pierwszy od czasu edycji (przestawienia flagi), powstaje jego zapis w historii, z którego będzie korzystać dokument (zatem funkcjonalność taka sama, a mniej danych w bazie).

Mówię "zwykle", bo miałem okazje takie rzeczy pisać i sam i w zespołach.

Różnica jest taka, że te moje "zwykle" obejmowało często wiele milionów rzędów co z poziomu UX było odczuwalne.

1 godzinę temu, Radomił Ząbik napisał:

PS. Miło, że dołączył nowy użytkownik, który próbuje też mieć wpływ na rozwój programu ;)

Także zauważyłem, że Pan tu dużo pisze. :)

 

Ale podsumowując - faktycznie pewnie przesadzam (nie lubię gdy ponad połowa tabeli to syf), a tutaj także uspokojony zostałem. Dopytam jeszcze może jaki +/- realny rozmiar ma Pana zapis tabeli z 144443 wpisami? Coś koło 60MB?

Edytowane przez Ernest Sadowski
Link to postu
×
×
  • Dodaj nową pozycję...