Skocz do zawartości

Czyszczenie bazy INSERTGT

Polecane posty

Witam,

Użytkujemy SubiektaGT już 7 lat i powoli zaczynamy mieć problemy pod kątem wydajności. Baza w chwili obecnej ma 5 GB, tabela dok__Dokument ma 0.5 M wierszy, natomiast tabela dok_Pozycja dochodzi do 4M wierszy.  W subiekcie jeśli wejdziemy na jakiś towar i klikniemy na kalkulacje cen to często trzeba czekać około 30 sekund na odpowiedź.

 W związku z tym pytanie czy istniej jakiś standardowy sposób/program na wyczyszczenie bazy i pozostawienie tylko bazę towarów, klientów i rozrachunki? Dodam to tego, że zależy mi na tym aby klucze główne tabel  tw__Towar, kh__Kontrahent nie zostały zmienione, ponieważ tabele te są później zaciągane do programu Power BI. 

Mam nadzieję, że znajdę tutaj osoby, które za rozsądne pieniądze pomogą mi rozwiązać powyższy problem.

 

Pozdrawiam,

Łukasz Garb

lukasz.garb@gmail.com

 

Edytowane przez Lukasz Garb
poprawka
Link to postu
1 godzinę temu, maniootek • napisał:

U nas pomaga odbudowa indeksów.

Co to znaczy "pomaga" -  jakie są czasy wyświetlenia kalkulacji cen dla powiedzmy 3 najczęściej sprzedających się towarów przed odbudową indeksów i po odbudowie ?

Nie ma takiej możliwości, aby odbudowa indeksów rozwiązała problemy wydajnościowe w zgłoszonych obszarach przy takich bazach danych, oczywiście mniej lub więcej przyspieszy te operacje lecz ten sam czas dla kogoś będzie zadowalający, a dla kogoś nieakceptowalny...

Poza tym nie dopuszcza takiej możliwości, że przy bazie danych z taką ilością dokumentów nie jest już wykonywana regularna odbudowa indeksów (pytanie do autora wątku) ?

Link to postu
3 godziny temu, Daniel Kozłowski napisał:

Poza tym nie dopuszcza takiej możliwości, że przy bazie danych z taką ilością dokumentów nie jest już wykonywana regularna odbudowa indeksów (pytanie do autora wątku) ?

Indeksy są odbudowywane raz w miesiącu. Niestety nie ma tutaj znaczącej poprawy.  Poszukuje rozwiązania, które by poprawiło wydajność przynajmniej o rząd wielkości (30s -> 3s) lub dwa (30s -> 0.3s). Dwa lata temu kiedy, zmienialiśmy sprzęt i tradycyjne dyski twarde spięte w RAID 1 (niezawodność) zostały zastąpione dyskiem SSD (wydajność) uzyskaliśmy oczekiwaną poprawę. Od tego czasu baza danych rośnie w bardzo szybkim tempie i po raz kolejny musimy się zmierzyć z problemem wydajności. 

Jeśli chodzi o samo okienko  "kalkulacja cen" w widoku towary i usługi to podejrzewam, że odbudowa indeksów mogłaby załatwić sprawę, ale tylko pod warunkiem wyłączenia poniższych kalkulacji: 

image.thumb.png.0537c54fc2a705f9f0b780c0b50f045d.png

Czy któryś z Panów potrafi wyłączyć obliczanie minimalnej, średniej, ostatniej, etc. cen sprzedaży?

 

Link to postu
19 godzin temu, Lukasz Garb napisał:

Indeksy są odbudowywane raz w miesiącu. Niestety nie ma tutaj znaczącej poprawy. 

Czyli dokładnie tak, jak przewidywałem.

 

19 godzin temu, Lukasz Garb napisał:

Poszukuje rozwiązania, które by poprawiło wydajność przynajmniej o rząd wielkości (30s -> 3s) lub dwa (30s -> 0.3s).

I to jest bardzo słuszny cel.

 

19 godzin temu, Lukasz Garb napisał:

Dwa lata temu kiedy, zmienialiśmy sprzęt i tradycyjne dyski twarde spięte w RAID 1 (niezawodność) zostały zastąpione dyskiem SSD (wydajność) uzyskaliśmy oczekiwaną poprawę.

No to było bardzo, bardzo biednie, RAID10 robi już znacząco różnicę, dyski SSD też można łączyć w macierze, trudniej, ale można... To sugeruje też, że może pomóc przejście na pełny serwer SQL (można wykonać testy), dyski SSD tylko na jakiś czas omijają ograniczenie cache w darmowej wersji serwera SQL.

 

20 godzin temu, Lukasz Garb napisał:

Od tego czasu baza danych rośnie w bardzo szybkim tempie i po raz kolejny musimy się zmierzyć z problemem wydajności. 

Pełny SQL i optymalizacja jest nieunikniona, alternatywa to również przez Pana sugerowane usunięcie danych. Należy mieć na uwadze, że optymalizacja to nie jest jednorazowa usługa, należy nanosić zmiany wraz z ilością danych i kolejnymi wersjami programów.

 

20 godzin temu, Lukasz Garb napisał:

Czy któryś z Panów potrafi wyłączyć obliczanie minimalnej, średniej, ostatniej, etc. cen sprzedaży?

Oferujemy praktycznie wszystkie usługi związane z programami Insertu poza wydrukami tekstowymi, pod warunkiem, że są nam po drodze i znajdziemy na to czas. Wyłączenie wyliczania poziomów cen to jedna z możliwości przy rozwiązywaniu problemów w tym obszarze (kalkulacja cen), w planach mam gotowe rozwiązanie do tego, ale jak wiele innych musi poczekać na interfejs użytkownika, na razie jest przygotowywane, instalowane i utrzymywane wdrożeniowo.

Link to postu

Moja baza ma 120GB działam na pełnym SQL. SQL radzi sobie naprawdę z dużymi bazami danych. Musi mieć jednak właściwe warunki pracy. 

Podstawa to dyski SSD i duża ilość RAM na serwerze oraz na stacjach roboczych. To kluczowa sprawa która radykalnie zmienia szybkość działania. Proponuję dla próby wymienić w jednej stacji dysk na SSD i zainstalować 8GB Ram. Nie zapominajmy o również o wydajności sieci kart sieciowych i swicha. Jeżeli całość jest spięta na przełączniku 10MB/s za 50 zł to nie da rady. Jakość kabli też ma znaczenie. Każde przekłamanie w transmisji powoduje konieczność powtórnego przesłania tej samej informacji ponownie.

Częstym błędem jest instalowanie na serwerze systemu operacyjnego innej generacji niż serwer. Nowsze oprogramowanie nie może skorzystać z oczekiwanych rozwiązań sprzętowych i ostatecznie działa wolniej.

Odbudowa indeksów robiona zdecydowanie częściej. Zalecana codzienna indeksacja. Robi to automat w nocy.

Kolejna sprawa to ustawienia filtrów. Przy codziennej pracy filtry powinny być ustawione na 7 ostatnich dni. Jeżeli są ustawione na czas nieokreślony za każdym razem zaczytywana jest cała lista dokumentów, rozliczeń i innych danych, które powodują opóźnienia u wszystkich użytkowników.

Dobrze jest również przynajmniej raz w tygodniu zrestartować serwer. Użytkownicy często niepoprawnie wylogowują się z systemu. W takich sytuacjach na serwerze "wiszą" nierozłączone połączenia z bazą danych. Takie sytuacje w praktyce bardzo spowalniają pracę.

Na koniec trzeba też zwrócić uwagę na inne czynności wykonywane na stacjach roboczych nie koniecznie związane z podstawowymi działaniami.

Link to postu

Daniel, jesteś guru w kwestiach oprogramowania INSERT i doceniam Twoją wiedzę. Próbuje uświadomić użytkownikom nie Tobie, że z g.... bata nie ukręcisz. Jak wystawiasz ok 150 tyś dokumentów rocznie to przy tej skali działalności niestety trzeba zamiast samochodu zainwestować w sprzęt. Takie życie. Użytkując dowolną bazę danych, jak osiągnie się granicę wydajności ze względu na ilość rekordów, bez inwestycji w sprzęt nie da się ruszyć dalej. "Dobry" serwer oraz "dobre" stacje robocze zdecydowanie pomagają w rozwiązaniu problemów wydajnościowych. Z drugiej strony optymalizacja oprogramowania ma ogromny wpływ na wykorzystanie posiadanych mocy przetwarzania danych przez serwer. Tu pojawia się pytanie czy w przypadku oprogramowania INSERT tak jest. Jestem przekonany, że jest duże pole do działania w tym zakresie na który nie mamy wpływu. Pozostaje więc inwestycja w sprzęt. Wiem z autopsji, że wymiana sprzętu daje efekt. 

Innym rozwiązaniem jest otwieranie co roku nowej bazy ze wszystkimi konsekwencjami ograniczeń w dostępie do danych historycznych lub częściowe usuwanie danych historycznych.

W tym wypadku Klient oczekuje usunięcia części bazy danych, a nie porad technicznych i wydajnościowych. Należy usunąć zbędne dane historyczne i zadowolić klienta zgodnie z jego oczekiwaniami. Przepraszam dałem się podpuścić w zbędną dyskusję.

Powodzenia

Link to postu

Wtrącając się do dyskusji, należy pamiętać, że oprogramowanie pudełkowe (nie tylko InsERT-u) w klasycznej komunikacji klient-serwer sql (gdzie jeszcze sporo funkcjonalności opiera się na procedurach bazodanowych) będzie miało swoje ograniczenia wydajnościowo w korelacji do zasobów sprzętowych  i kosztów związanych z bieżącymi konserwacjami takich baz.

Sytuacja zaczyna się już trochę zmieniać w przypadku oprogramowania dla firm będących obiektowymi rozwiązaniami (baza służy tylko do zapisu i odczytu danych). Jednak przypadek nexo nie będzie tutaj dobrą kalką, gdyż sama pewna funkcjonalność w programie, skrojona pod pewnie 'uniwersum' użytkowe, też może powodować problemy na końcówkach przy dużej liczbie obiektów.

Dopiero faktycznie rozwiązania klasy ERP mają takie mechanizmy jak np. serwery aplikacji (odpowiadające za komunikację klient-serwer a nie klient-baza), realizujące zapisy do bazy hurtowo (a nie per pozycja, wielokrotnie 'mielenie' insertów i update'ów nawet z kontekstu jednego dokumentu), gdzie utrzymanie dużych baz jest po prostu wygodniejsze.

W przypadku InsERT bez problemu jednak utrzymujemy bazy i po ponad 100 GB. Bardziej jest zasadnicze, jakie tabele mają wpływ na wielkość bazy.

Link to postu
  • 10 miesięcy temu...

Odświeżam temat.

Potrzebuję wyczyścić bazę ze wszystkich dokumentów (FZ, FS, PA, WZ, PZ, kasowe itd). Chcę uzyskać bazę ze wszystkimi ustawieniami jakie przez lata wprowadziliśmy, kartotekami itd, jednak zupełnie bez dokumentu. Wspomoże ktoś jakimś poleceniem SQL?

Musze odciąć sprzedaż z z pewnego okresu i od nowego mieć świeżą bazę. Tworzenie nowej bazy traktuję jako rozwiązanie ostateczne. Wprowadzanie do niej wszystkich ustawień, pół własnych, cech, kartotek, indywidualnych wzorców wydruku, kategorii itd., będzie w mojej ocenie bardziej czasochłonne.

Link to postu
5 godzin temu, Dominik Lachowski napisał:

Potrzebuję wyczyścić bazę ze wszystkich dokumentów (FZ, FS, PA, WZ, PZ, kasowe itd). Chcę uzyskać bazę ze wszystkimi ustawieniami jakie przez lata wprowadziliśmy, kartotekami itd, jednak zupełnie bez dokumentu. Wspomoże ktoś jakimś poleceniem SQL?

Co do zasady nikt nie udostępnia takich narzędzi, operacje takie wykonywane są jako usługa, po przesłaniu bazy danych lub zdalnie.

Link to postu
13 godzin temu, Dominik Lachowski napisał:

Odświeżam temat.

Potrzebuję wyczyścić bazę ze wszystkich dokumentów (FZ, FS, PA, WZ, PZ, kasowe itd). Chcę uzyskać bazę ze wszystkimi ustawieniami jakie przez lata wprowadziliśmy, kartotekami itd, jednak zupełnie bez dokumentu. Wspomoże ktoś jakimś poleceniem SQL?

Musze odciąć sprzedaż z z pewnego okresu i od nowego mieć świeżą bazę. Tworzenie nowej bazy traktuję jako rozwiązanie ostateczne. Wprowadzanie do niej wszystkich ustawień, pół własnych, cech, kartotek, indywidualnych wzorców wydruku, kategorii itd., będzie w mojej ocenie bardziej czasochłonne.

Jesteśmy w stanie zrealizować to jako usługę. Ale uwaga, jeśli optymalizacja bazy wynikałaby z konieczności zostawienia dokumentów od pewnego okresu - a nie wycięcia wszystkiego co było - nie mamy w tym momencie możliwości czasowych na oprogramowanie przepięcia dostaw pozostających dokumentów na dokument inwentaryzacyjny PW - byłoby to też bardzo kosztowne. W takim przypadku może wystarczy eksport dokumentów do EPP a potem import w wyczyszczonej bazie. Mamy też narzędzie które analizuje kolejność dokumentów, by potem zbiorczo wywołać skutki na zaimportowanych dokumentach.

Link to postu
15 godzin temu, Daniel Kozłowski napisał:

Co do zasady nikt nie udostępnia takich narzędzi, operacje takie wykonywane są jako usługa, po przesłaniu bazy danych lub zdalnie.

Dzięki za wiadomość. Nie zaglądam na forum SGT i liczyłem że jest tutaj też "grupa wsparcia" jak na forum Sello :)

 

 

8 godzin temu, Radosław Kostrzewa napisał:

Jesteśmy w stanie zrealizować to jako usługę. Ale uwaga, jeśli optymalizacja bazy wynikałaby z konieczności zostawienia dokumentów od pewnego okresu - a nie wycięcia wszystkiego co było - nie mamy w tym momencie możliwości czasowych na oprogramowanie przepięcia dostaw pozostających dokumentów na dokument inwentaryzacyjny PW - byłoby to też bardzo kosztowne. W takim przypadku może wystarczy eksport dokumentów do EPP a potem import w wyczyszczonej bazie. Mamy też narzędzie które analizuje kolejność dokumentów, by potem zbiorczo wywołać skutki na zaimportowanych dokumentach.

Podrzuć cenę usługi. Do wyczyszczenia są wszystkie dokumenty jakie znajdują się w bazie. Po czyszczeniu baza ma wyglądać jakbym zaczynał działalność na nowo, zachowując jednocześnie wszystkie dotychczasowe ustawienia (pola własne, wzorce wydruków, zestawienia, cechy itp.) oraz kartoteki towarowe i kontrahentów.

Przyznam się, że próbowałem. Utknąłem na nz_FinanseSplata i na tą chwile nie mam pomysłu jak to obejść.

Link to postu
5 godzin temu, Dominik Lachowski napisał:

Dzięki za wiadomość. Nie zaglądam na forum SGT i liczyłem że jest tutaj też "grupa wsparcia" jak na forum Sello :)

 

 

Podrzuć cenę usługi. Do wyczyszczenia są wszystkie dokumenty jakie znajdują się w bazie. Po czyszczeniu baza ma wyglądać jakbym zaczynał działalność na nowo, zachowując jednocześnie wszystkie dotychczasowe ustawienia (pola własne, wzorce wydruków, zestawienia, cechy itp.) oraz kartoteki towarowe i kontrahentów.

Przyznam się, że próbowałem. Utknąłem na nz_FinanseSplata i na tą chwile nie mam pomysłu jak to obejść.

Cena, w zależności od szczegółów - nie mniej niż 500, nie więcej niż 1000.

Tutaj mogę Ci podpowiedzieć. Przed usuwaniem wyłącz wszystkie triggery i constrainty.

Link to postu
13 godzin temu, Dominik Lachowski napisał:
Dnia 12.10.2020 o 16:54, Daniel Kozłowski napisał:

Co do zasady nikt nie udostępnia takich narzędzi, operacje takie wykonywane są jako usługa, po przesłaniu bazy danych lub zdalnie.

Dzięki za wiadomość. Nie zaglądam na forum SGT i liczyłem że jest tutaj też "grupa wsparcia" jak na forum Sello :)

Forum Sello to "inny świat", z dość oczywistych powodów, których jednak nie będę przytaczał publicznie "grupa wsparcia" to pracownicy firmy Insert, jest ich praca, my, Partnerzy też musimy z czegoś żyć i naturalnie zachowujemy dużo dla siebie.

Link to postu
×
×
  • Dodaj nową pozycję...