250k komórek w prawie 5 minut - dobry czas?

0

Cześć,

W pracy mamy kilka systemów, jeden z nich opiera się na bazie danych Oracle, inny na SQL Server. Ja pracuję na tym z SQL Server, jestem zwykłym programistą, bez fajerwerków. Potrzebowałem pewnych danych z systemu Oracle, do którego nie mam żadnego dostępu, a więc nie znam jego architektury. Lider zespołu pracującego przy tym Oracle wystawił dla mnie widok, który ściągam sobie po Linked Server. Cała operacja trwa nieco ponad 4:30 minuty. Spytałem tą osobę, czy nie mogłaby trochę zoptymalizować tego widoku, bo to spory czas mi się wydaje jak na 25 tysięcy wierszy z 10 kolumnami. Zostałem delikatnie wyśmiany, bo:

  1. on myślał, że 4:30 to 4h 30min a nie 4min 30 sek,
  2. jak zamierzam ściągać dane z tego widoku raz na dobę, to szkoda zachodu, bo włożona praca w optymalizację nie opłaci się wystarczająco
  3. nawet jakby go zoptymalizował, to i tak będzie niewielka różnica
  4. twierdzi, że jemu ten widok działa około 3 minut, reszta czasu pożera przesłanie danych po linked serverze

Ogólnie to on pracuje dużo więcej czasu ode mnie i jak wspomniałem jest liderem innego zespołu, ja pracuję dopiero od dwóch lat. Poczułem się potraktowany jak jakiś młokos, który nie ma pojęcia o rzeczywistości. Moje pytanie do Was - co o tym sądzicie? Bo ja nie wiem jak wygląda ta baza Oracle, ale tak długi czas wykonywania widoku dla zwrócenia 25k wierszy świadczy dla mnie o tym, że architektura tej bazy danych jest słabo przemyślana, a mimo wszystko sądzę, że jak się zechce, to niewielkim nakładem pracy można jednak dużo optymalniej napisać ten widok, jakąkolwiek kupę by tam mieli. Jak myślicie? Da się usprawiedliwić takie działanie? Jest to normalne, a ja jeszcze mało widziałem?

1

Jeśli są tam robione po drodze jakieś joiny i miliony podzapytań, to i te 4 minuty dają niezły czas ;-)
Bez wiedzy o tym, jak konkretnie wygląda ta baza, nie ma nawet co przypuszczać, ponieważ z miejsca dojdziemy do dwóch, zupełnie odmiennych wniosków.

jak zamierzam ściągać dane z tego widoku raz na dobę, to szkoda zachodu, bo włożona praca w optymalizację nie opłaci się wystarczająco

Tu się zgadzam - YAGNI.
Skoro pobierasz dane raz na dobę, naprawdę nie ma co nad tym siedzieć.

0
Patryk27 napisał(a):

Tu się zgadzam - YAGNI.
Skoro pobierasz dane raz na dobę, naprawdę nie ma co nad tym siedzieć.

niby tak, tylko że takich integracji jest wiele i grosz do grosza i różnica w zjadaniu zasobów sprzętowych robi się duża.

0

To już zależy od konkretnego przypadku.
W sytuacji podanej przez Ciebie również nie siedziałbym nad tym zapytaniem ani chwili dłużej, aby je zoptymalizować, ponieważ nie ma takiej potrzeby - natomiast gdyby takich zapytań było na przykład sto, można by rozważyć :P

0

Jeśli może Ci zrzucić dane do pliku to może być dużo szybciej - tylko mniej wygodnie.
Na mainframe (z/OS) tak robiliśmy - dane były zrzucane na pewno bardzo szybko (nawet miliony rekordów), zwykle ich konsumpcja była o wiele dłuższa.
Z tego co pamiętam, mieliśmy limit na maszynie maks. 5 min na proces i nigdy go nie przekroczyliśmy w poprawnym procesowaniu.

Dlaczego to niewygodnie?

  • musisz zarządzać plikiem (czy jest, czy go skasować, kiedy był zrzucany, etc).
  • to jest komunikacja offline - ktoś musi zainicjować zrzut, trzeba czekać na zakończenie zrzutu

25 tys rek / 5 min to nie jest jakiś oszałamiający wynik (83 rek/s).
Jeśli takich zestawień jest maks. 10 (< 1h) to nie ma co się zastanawiać - dobrze jest jak jest. Zresztą to też zależy od klienta (i DBA).
Ale jeśli zrobi się z tego 2-3h to może trzeba będzie coś zacząć optymalizować, bo mało efektywne zapytania obciążają bazę, która w tym czasie mogłaby robić coś innego.

0

Jak pisali poprzednicy, Ty znasz czas jaki potrzebuje oracle na widok udostępniany do SQL Servera, 4,5 minuty wydaje się długo ale nie mamy wiedzy co musi przemielić baza Oracle by te dane zwrócić, pozostaje przejść na tym do porzadku dziennego bo możliwości jest kilka m.in.:

  1. Zapytanie jest optymalne ale zasoby potrzebne do wygenerowania danych nie dają rade szybciej
  2. Widok oracle był pisany "na kolanie" aby było

Wychodzi na to, że nie przeskoczysz...

0

Znam ten ból. Jeśli będzie więcej takich sytuacji to domagaj się sensownej optymalizacji, jeśli nie, lepiej położyć uszy po sobie. Niestety pracowałam na SQL Serverze i nie sądziłam że kiedy przesiądę się na Oracle będę aż tak zadowolona ze zmiany. Oracle działa o wiele lepiej bo clou w Oracle to optymalizacja, w SQL Serverze nikt sobie nie zaprzątał tym głowy. Nie wiem czy wszędzie tak jest, ale w mojej firmie było. Być może to kiepski PM do tego doprowadził i tyle, a człowiek sam z siebie miał tyle rzeczy do zrobienia, że rzucał tylko "działa? działa, czyli no problem"

0

Skończyło się tym, że widok został zoptymalizowany. Zamiast 4:30 min jest 45 sekund, a więc jestem zadowolony, bo ten pierwszy czas zajmował 75% czasu działania mojego joba robiącego wiele więcej rzeczy, teraz to jest już tylko 37%.

1 użytkowników online, w tym zalogowanych: 0, gości: 1