Wpis z mikrobloga

Co ja wczoraj widzialem - az do tej pory mnie oczy szczypia....

Jest sobie procedura. W srodku - miedzy innymi - jest UPDATE. I ten UPDATE zamienia tylko jedna kolumne - ale #!$%@? JAK!

Zmieniana wartosc pochodzi z funkcji operaujacej na kazdym rekordzie pojedynczo, a funkcja jako jeden z parametrow przyjmuje wynik z SELECTa. Ale jakiego SELECTa!

Ten SELECT laczy trzy tabele i najmniejsza ma 30 milionow rekordow. Najwieksza 250 milionow :)

Balem sie odpalac execution plan dla takiego zapytania bo jesli by faktycznie wyszlo ze taki join jest dla kazdego rekordu czyli kazdego wywolania funkcji budowany oddzielnie to bym zupelnie pod biurko zjechal.

Nie wnikalem juz w to dalej tylko wezwalem zmianowego egzorcyste i powiedzialem mu co i jak. Zbladl i osunal sie na krzeslo....

Dalej nie wiem co bylo bo zrobilem sobie kanapke :)

Dzisiaj musze do tego wrocic i udokumentowac jak zle to jest rozwiazanie i dlaczego nie mozna sie doczekac konca wykonania procedury przed zachodem slonca....

Mam nadzieje ze ktos, kto to napisal zajmuje teraz jakies kierownicze stanowisko i nie pisze juz zadnych zapytan.

#gorzekiezale #bazydanych #oracle
  • 18
@aaandrzeeey: Pchnalem to na razie do doswiadczonego DBA niech ustali z biznesem co oni chca tak naprawde. Bo najstarsze dane sa chyba z 2009 roku. To raz. A dwa z takimi rzeczami to sio na BI czy hurtowni a nie do aplikacji ze zwyklym webowym frontendem gdzie jest zalozenie ze wszystko w bazie ma sie wykonac zanim sie strrona przeladuje.

Ewentualnie zmienic troche zeby sie raport generowal asynchronicznie w tle i
Ewentualnie zmienic troche zeby sie raport generowal asynchronicznie w tle i spokoj


@msq: Anyway. Być może to jest opcja. Ale nie zmienia to faktu, że nawet raporty generowane nocą również powinny być optymalizowane.
Ja na razie mialem odpowiedziec na pytanie dlaczego nie dziala, dlaczego czekam na to pietnascie minut


@msq: adwokat diabła? Huh?

Zawsze nie działało?

Czy "nie zadziała" ( ͡º ͜ʖ͡º) skalowalność?
@msq: Tak w temacie: naszym Data Scientist wczoraj się skończyło miejsce w klastrze Redshift (mówimy o setkach GB wolnego miejsca, żeby nie było) - skoczyło nagle z 40% do 100%, aż Redshift "usiadł". Rzut oka na zapytanie... postanowiłem zabawić się z nimi w "kto pierwszy znajdzie błąd". Mina autora zapytania, który zauważył, że robił join na tabeli X i Y, ale w "ON" użył X.ref = X.ref - bezcenna ;-)
@msq: @aaandrzeeey: Kluczem do optymalizacji i porządku w bazach (i przejrzystości interfejsów) są zawsze widoki z widoków. Najlepiej jest jak widok łączy widoki, które z kolei... też są stworzone z widoków. Miałem taką sytuację - nie mogę niestety powiedzieć gdzie. Było zajebiście, tym bardziej, że musiałem to przepisać:)