Wpis z mikrobloga

Kiedy testuję swoje zapytanie załóżmy rano albo wieczorem to trwa ono 1,5s a jak testuję w środku dnia to trwa 5s i aplikacja muli. Mówię do managera, żeby zwiększyli zasoby w bazie danych czy coś a on, że to ma działać szybciej i mam to poprawić.

Sam nie wiem kto ma rację xD No ale jeśli coś działa dobrze kiedy nie ma obciążenia, to w takim razie nie jest problemem samo zapytanie a brak zasobów?

#programowanie #bazydanych
  • 11
  • Odpowiedz
@Murasame: testuj lokalnie i optymalizuj. Jak chcesz mieć rację, to z managerem musisz rozmawiać w innych kategoriach. Policz o ile taniej wychodzi dodanie zasobów do bazy dla jednego niezoptymalizowanego zapytania w stosunku do Twojej płacy w okresie naprawiania tego. Choć ewentualne wyliczenia raczej wykażą odwrotnie, a skoro jest czas i priorytet na optymalizację to tylko się cieszyć i korzystać
  • Odpowiedz
  • 0
@eloar:

Głównym źródłem problemów i tak są kiepsko zaprojektowane tabele, gdzie potem w widoku musza łączyć wiele rzeczy, które nie łączą się ze sobą po jakichś id tylko po innych kolumnach i nawet dodawanie indeksów nie ratuje sytuacji.

I w momencie kiedy chcę dodac jakiś warunek do takiego widoku to wydajność kuleje.

I mam problem bo jak testuję to rano to po dodaniu jakiegoś warunku wydajność spada założym z 1,2s na
  • Odpowiedz
No ale jeśli coś działa dobrze kiedy nie ma obciążenia, to w takim razie nie jest problemem samo zapytanie a brak zasobów?


@Murasame: to zależy. Tak czy owak warto optymalizować zapytania, bo często mała pierdoła sprawia, że baza klęka. A optymalizacja sprawi, że i na produkcji będzie szybciej i będzie można obsłużyć większy ruch
  • Odpowiedz
  • 0
@Saly: Tylko właśnie dobiłem do progu moich możliwości i już nie potrafię ulepszyć tego zapytania.

Jest głupi wymóg gdzie najważniejsza tabela nie normalnych powiązań z innymi tabelami. Chodzi o to, że dane w tej tabeli będą co jakiś czas czyszczone i wprowadzane od nowa a dane w innych tabelach zostaną. Dlatego np. nie ma id użytkownika czy id biura, tylko jest np. potem łączone to w widoku tak, że po jakimś
  • Odpowiedz
@Murasame: nic nie stoi na przeszkodzie abyś przeprojektował tabelki i widoki w celu optymalizacji, zastosował indeksy w odpowiednich miejscach itd. Optymalizacja nie musi się ograniczać do jednego zapytania.
  • Odpowiedz
@Murasame: Jak dane chcesz tylko wyświetlać to ja rozwiązuje problemy w ten sposób, że paginacji podlega tylko główna tabela, a resztę informacji z innych tabel już po paginacji dorzucam funkcjami. Czyli np lista pracowników z tabeli pracownicy i paginacja, a informacja o dochodach, czy wartość sprzedaży już funkcją po id_pracownika - etc.
  • Odpowiedz
@Murasame Sprawdź plany zapytania rano, w ciągu dnia i wieczorem.
Czy na tabelach źródłowych jest duża zmienność danych? Jaki procent jest różnicy między rankiem, a południem gdy muli?
Od tych pytań i odpowiedzi na nie trzeba w ogóle zacząć.
  • Odpowiedz