Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Labirynt dostrajania wydajności

Pewnego dnia budzisz się i stwierdzasz, że jesteś administratorem bazy danych Oracle. Bogowie wreszcie ujrzeli światło w Twoim prawdziwym potencjale i pozwolili Ci pracować w najlepszej pracy na świecie! Rozpoczynasz swoją karierę DBA z jasnymi oczami i krzaczastym ogonem. Tworzysz nowe bazy danych, nadajesz uprawnienia, piszesz kod PL/SQL. Życie jest świetne. Nie możesz się doczekać, aby wstać rano, nalać pierwszą filiżankę kawy i skierować przeglądarkę na swoje ulubione fora Oracle, chcąc przed obiadem pochłonąć wiedzę z całego życia! Jeśli ci bogowie wciąż się do ciebie uśmiechają, możesz nawet odpowiedzieć na kilka pytań i zostać nagrodzonym niesamowitymi punktami. Życie jest dobre. Życie jest słodkie.

Podczas gdy wciąż pławisz się w blasku nowo odkrytej kariery, ktoś przychodzi do Ciebie z problemem. Problem z wydajnością. Zamarzasz. Gdy dochodzisz do samoświadomości, że nie masz pojęcia, jak rozwiązać problemy z wydajnością bazy danych, masz małą gulę w gardle. Tego dnia nie zdawałeś sobie sprawy, że każdy DBA przed tobą był w dokładnie takiej samej sytuacji na początku swojej kariery. Jednak nie powstrzymuje to drugiej osoby przed spojrzeniem na Ciebie i zastanawianiem się, dlaczego nie rozwiązujesz problemu z wydajnością od razu. W końcu jesteś DBA i powinieneś wiedzieć, jak to zrobić. Te magiczne rzeczy, które nazywają (pobudzają śpiew aniołów) Dostrajanie wydajności . Bo zostało napisane, że jeśli chcesz zostać DBA i przeżyć, i dobrze wykonywać tę pracę, będziesz musiał dostroić wydajność. Inni nigdy nie będą wiedzieć, co dzieje się za zasłoną, kiedy robisz mikstury i rzucasz zaklęcia. Jedyne, na czym im zależy, to to, że rozwiązałeś ich problem z wydajnością i mogą kontynuować codzienną pracę.

Na tym etapie, na początku swojej kariery, każdy administrator bazy danych decyduje, że musi dowiedzieć się więcej na temat tego, co nazywają dostrajaniem wydajności . Co to jest? Jak mam to zrobić? Jak mogę stać się najważniejszą osobą w moim dziale IT, ponieważ odkryłem sekretny sos, który zamienił ten 5-godzinny raport w 1-minutowy cud?

Och, byliśmy wtedy tacy młodzi… tacy naiwni. Myśleliśmy, że to łatwe. Wciśnij kilka przycisków, odpal kilka narzędzi i presto. Rozwiązanie dostrajania wydajności zostało znalezione i jesteśmy wspaniali! Życie wydawało się takie proste, gdy szliśmy tą żółtą ceglaną drogą. Ale na tej drodze nie ma strasznych wron. Żadnych lwów. Żadnych blaszanych mężczyzn. Nawet słodkie małe psy o imieniu Toto. Nie… ta droga… ta droga Oracle Performance Tuning jest pełna rzeczy o wiele lepszych. Na tej drodze spotykamy narzędzia i narzędzia. Spotykamy się z Planem Wyjaśnienia. Spotykamy tkprof i SQLT. Znajdujemy wspaniałe widoki, takie jak V$SGA_TARGET_ADVICE i V$SESSION_WAIT oraz jego bliźniak V$SESSION_EVENT (nie zwracają na Ciebie uwagę bliźniaki jednojajowe, ale jedno spojrzenie i wiesz, że są spokrewnione).

Więc jesteś. Twój błyszczący tytuł DBA nadal znajduje się pod Twoim imieniem i nazwiskiem w każdym wysyłanym podpisie e-mail. A teraz masz do dyspozycji wszystkie te wspaniałe narzędzia. Wybrałeś ASH i AWR, ponieważ na szczęście Twoja firma podarowała Ci pakiet diagnostyczny. Twój regał jest uzbrojony w takie wspaniałe tomy jak ten. (Wstydna wtyczka, którą znam). Jakiś świetny gość na forach, taki jak ja, naprowadził cię na Lighty'ego. Masz do dyspozycji cały zestaw narzędzi. Nie! Nie skrzynka z narzędziami….skrzynia wojenna! Małe państwa w innych miejscach na świecie nie mają arsenału, jakim dysponujesz. Dlaczego… mógłbym dotknąć tego supertajnego przycisku w programie SQL Tuning Advisor i zdmuchnąć jeden z tych krajów, *i* spraw, aby SQL ID 98byz76pkyql działał szybciej, podczas gdy z mojej kawy wciąż unosi się para…Jestem taki dobry.

Pamiętasz dzień, w którym dostałeś swój pierwszy numer występu i miałeś gulę w gardle? Jest jeszcze jeden taki dzień w Twojej karierze DBA. To dzień, w którym dotrzesz do Labiryntu dostrajania wydajności (sygnał grzmotu i błyskawicy). Ale to nie jest labirynt. To jest inne. Większość labiryntów ma jedno wejście i jedno wyjście, z wieloma zakrętami i decyzjami po drodze. Ten labirynt, ten labirynt jest oczywiście inny. Ten labirynt ma wiele, wiele wejść. A ten labirynt ma wiele, wiele wyjść. Każde wejście to inne narzędzie do dostrajania wydajności. A każde wyjście to rozwiązanie , ale nie wszystkie rozwiązania naprawdę rozwiązują problem z wydajnością. I to jest zagadka, przed którą stoją specjaliści dostrajania wydajności Oracle. Mam problem z wydajnością. Wiem, że po drugiej stronie tego labiryntu jest moje rozwiązanie. Ale które wejście wybrać? Jedno wejście ma napisane powyżej „Plan wyjaśnienia”. Na innym wejściu jest napisane V$DB_CACHE_ADVICE. Dlaczego są te wszystkie wejścia, po jednym dla każdego narzędzia do mojej dyspozycji. To opowieść o mojej młodości i mam nadzieję, że jak Bilbo napisał do Froda, ta historia może pomóc także w twoich przygodach.

Więc wybieram wejście.

Wchodzę do labiryntu.

Czy dokonałem dobrego wyboru?

Zobaczmy, do czego to prowadzi. Przed nami droga skręca w lewo. Ale to mój jedyny wybór, więc idę z tym. Następnie dochodzę do skrzyżowania. Mogę iść w prawo lub w lewo. Skręcam w prawo. Ups… ślepy zaułek. Więc cofam się i skręcam w lewo. Kolejny ślepy zaułek. Dramaty. Źle wszedłem do labiryntu. Czasami narzędzia nie prowadzą do żadnego rozwiązania. Więc wracam do wejść i dokonuję innego wyboru, wybieram inne narzędzie.

Wszedłem teraz do labiryntu po raz drugi. Ale sprawy wyglądają znacznie lepiej. Idę dalej. Jeszcze tylko kilka tur. Widzę światło, więc wiem, że zbliżam się do końca. Tak… oto wyjście. W końcu wychodzę po drugiej stronie labiryntu. Mam rozwiązanie do dostrajania wydajności, ale po wdrożeniu rozwiązania szybko zdaję sobie sprawę, że to wcale nie rozwiązało mojego problemu z wydajnością. Czasami narzędzia mogą prowadzić do rozwiązań, które nie mają wpływu na konkretny problem. Czas więc na moje trzecie wejście do labiryntu.

Teraz, będąc bystrym specjalistą dostrajania wydajności, zdałem sobie sprawę, że wszystkie wybrane przeze mnie dotychczas wejścia są związane z ogólną wydajnością bazy danych, ale to, czego naprawdę szukam, to wydajność związana z konkretnym poleceniem SQL. Ale nie wiem, która instrukcja SQL wymaga dostrojenia. Jak mogę się dowiedzieć, który? Otóż ​​trzy drzwi dalej jest wejście do labiryntu oznaczonego SQL Trace. Tuż obok znajdują się drzwi z napisem Sesje poszukiwań EM. Rzucam monetą i wybieram śledzenie SQL. Niedługo po wejściu do labiryntu dochodzę do skrzyżowania. Jeśli pójdę w lewo, zabiorę mnie z powrotem do drzwi Sesje wyszukiwania EM. Jeśli pójdę w prawo, to prosty strzał do wyjścia. Oczywiście idę w prawo. Ale w tym momencie wiem, że czasami dwa różne narzędzia prowadzą do tej samej odpowiedzi. Gdy wychodzę z labiryntu, otrzymuję darmową przepustkę do tkprof, ponieważ w końcu wszystkie drogi SQL Trace nie prowadzą bezpośrednio do tkprof? Mam teraz obraźliwą instrukcję SQL. Ale mój problem nie został jeszcze rozwiązany. Co robić?

Wracam do wejścia do labiryntu. Czasami otrzymujemy odpowiedź z naszych narzędzi dostrajania i musimy wykonać kolejny bieg przez labirynt, aby przejść do ostatecznej odpowiedzi. Tym razem wchodzę do drzwi SQLT. Kilka zakrętów i zakrętów, ale ta ścieżka labiryntu jest dość łatwa, a przynajmniej tak się wydaje. Dochodzę do końca i mam nie tylko jedną odpowiedź, mam wiele odpowiedzi. Och… wspaniały dzień! Znalazłem matkę wszystkich narzędzi.

Słyszałem, jak inni administratorzy baz danych mówili o tych cudownych narzędziach, takich jak raporty SQLT i AWR. Jakie są cudowne. Te narzędzia są tak świetne, że niektórzy administratorzy baz danych widzą tylko wejścia do raportów SQLT i AWR. Zawsze myślałem, że to są legendy, ale w końcu znalazłem jedno narzędzie, aby nimi wszystkimi rządzić… ok… po jednym na każdą rękę. Wszystkie te odpowiedzi mam do dyspozycji. Teraz, która odpowiedź jest bezpośrednio związana z moim problemem z wydajnością. Tutaj mam mój raport SQLT i mam w nim wszystkie te odpowiedzi. Która odpowiedź jest moja. Który?!?!? Czasami narzędzia dają zbyt dużo informacji. Dla mnie, który jest nowy w tej kwestii dostrajania wydajności, dane wyjściowe SQLT mogą równie dobrze być napisane w języku klingońskim. Ale mam szczęście, znam kolegę DBA, który siedzi dwie sześciany ode mnie i mówi po klingońsku. Podaję mu moje dane wyjściowe SQLT. Kartkuje go iw ciągu 30 sekund wskazuje jeden mały fragment raportu i wypowiada te magiczne słowa. „Widzisz… właśnie tam… to jest twój problem.” Z dziwnym wyrazem twarzy macha ręką nad raportem i jak za dotknięciem czarodziejskiej różdżki, Tłumacz Google zmienił kilka słów na stronie i teraz wyraźnie widzę, że mam tabelę z bardzo złymi statystykami. Czasami narzędzia ze wszystkimi tymi odpowiedziami to świetna oszczędność czasu dla tych, którzy wiedzą, jak z nich korzystać. Ten mówiący Klingończykami DBA podnosi okulary i ujawnia kolejną część raportu SQLT. „Zobacz tutaj, mówi… te złe statystyki wymuszają FTS”, jakbym miał wiedzieć, czym jest FTS w tym momencie mojej kariery. Ale nie chcę wyglądać na totalnego n00b, więc uśmiecham się i kiwam głową na znak zgody.

Ok… zbliżam się do rozwiązania mojego problemu. Wiem, że mam złe statystyki. Wracam do biurka chętny do pracy, aby w końcu rozwiązać swój problem. Kiedy przechodzę obok dystrybutora wody i krążę wokół wszechobecnego tłumu moich współpracowników, nie mając nic lepszego do roboty przez cały dzień poza pogawędką, słońce świeci przez jedne drzwi do labiryntu i przykuwa mnie kątem oka… tylko jedne drzwi. Nad tymi drzwiami znajduje się tabliczka z napisem DBA_TABLES. Cóż, jak każdy dobry DBA, mówię sobie, że nie jest złym pomysłem, aby dwukrotnie sprawdzić te rzeczy. Zaczynam się do tego przyciągać, wchodzę do drzwi DBA_TABLES i znów znajduję się w labiryncie. Robię szybki zwrot i coś wyskakuje na mnie, jakby chciał mnie przestraszyć. Ale staję się w tym dobry. Nie obchodzi mnie, że jakiś mały mieszkaniec labiryntu upiera się, że powie mi, że ten stół znajduje się w przestrzeni tabel UŻYTKOWNICY. Od razu dowiaduję się, że nie ma to żadnego znaczenia dla mojego problemu. Naciskam i ignoruję wszystkie te małe chochliki z ich fałszywymi informacjami. Naciskam. I mam to… potwierdzenie przy wyjściu z labiryntu, że na tej tabeli nie ma statystyk. Wyciągnęliśmy tutaj krótką lekcję, czasami narzędzia podadzą informacje, które nie są dla Ciebie istotne w tym dniu .

Może jestem nowy w tej grze DBA, ale wiem o tym. Muszę zobaczyć, jak rzeczy się teraz radzą, wprowadzić zmiany i zmierzyć poprawę wydajności, jeśli w ogóle. Więc wracam do labiryntu. Tym razem wchodzę do drzwi oznaczonych SQL Developer Autotrace i wykonuję obraźliwą instrukcję SQL. Nie tylko otrzymuję czas wykonywania instrukcji SQL, ale widzę liczbę odczytów i plan wykonania. Szybko aktualizuję statystyki na stole, które wskazał mi mój klingoński przyjaciel. (szybko na bok… kiedyś myślałem, że jest palantem, ale teraz nie jest taki zły. Mogę się uczyć od tego faceta. Może pewnego dnia też będę mógł mówić po klingońsku). Następnie ponownie wchodzę w drzwi programu SQL Developer Autotrace. Nie tylko wykonanie mojego zapytania skróciło się z 2 minut wykonania do 2 sekund, ale także znacznie spadły odczyty i poprawił się plan wyjaśniania. Ok, ta ostatnia część jest trochę naciągnięta. Nadal jestem zbyt zielony, by wiedzieć, że plan wyjaśniania był lepszy, ale patrząc wstecz na to w dalszej karierze, wiem, że tak było. Szybko dowiaduję się, że czasami narzędzia do dostrajania wydajności są do mojej dyspozycji nie tylko po to, aby pomóc znaleźć pierwotną przyczynę problemu, ale także po to, aby potwierdzić, że rozwiązanie faktycznie naprawiło problem. Czasami narzędzia do potwierdzania wyników nie są narzędziami, których używałem do znalezienia pierwotnej przyczyny.

Szybko poinformowałem użytkownika końcowego, że problem został rozwiązany. Użytkownik narzeka na coś, czego nie mogłem zrozumieć, i sprawdza, czy rzeczywiście jego życie jest lepsze. I wtedy to otrzymuję. Największy prezent, jaki może otrzymać DBA. Zgadza się… Otrzymałem uwielbienie użytkowników . Dzisiaj jestem cudotwórcą, a przynajmniej tak myśli użytkownik. Kiedy stoję w sześcianie tego użytkownika, on krzyczy „NAPRAWIŁ TO” i na zawołanie głowa całego działu wyskakuje nad ścianami sześcianu jak susły z ziemi. Hurra.. wiwatują! Kocham życie wygrzewając się w blasku. Dlaczego szef nawet proponuje, że po pracy zabierze nas do pubu… pierwsza runda jest na niej.

Wracam do biurka, chętny do podjęcia kolejnego wyzwania. Ta praca nie mogłaby być słodsza.

Pamiętam moje pierwsze spotkania z tym Performance Tuning Maze, jakby to było wczoraj. Kiedy tamtego wieczoru żartowaliśmy przy piwach w pubie, nie śmiałem mówić o niektórych rzeczach, które widziałem w tym labiryncie. Moi współpracownicy i tak by tego nie zrozumieli. Nigdy nikomu nie opowiadam o moich walkach ze smokami MOS. Zbyt wiele razy się poparzyłem. Nigdy nikomu nie mówię, jak nudne jest uruchamianie zapytania, czekanie godziny na wynik, próba ponownie, czekanie godzinę, próba jeszcze raz, czekanie godzinę..ups..Drzemałem tam. Próby i udręki mojej młodości lepiej ocalić na inny czas. Może napiszę kolejną książkę.

Ale w tamtych czasach wiele się nauczyłem. Z biegiem czasu stawałem się lepszy i wybierałem najlepsze wejście do labiryntu dla danego problemu. W końcu tylko z doświadczeniem można stać się lepszym z tymi magicznymi eliksirami dostrajania wydajności. Nauczyłem się też, że czasami jedno narzędzie wydaje się być odpowiednim narzędziem do pracy, tylko po to, by w trakcie dostrajania odkryć, że inne narzędzie jest lepiej dopasowane.

Dowiedziałem się też, że to praca z narzędziami i uczenie się, w czym są dobrzy i na odwrót, w czym nie są dobrzy, mogę najlepiej wybrać odpowiednie narzędzie do pracy. Kiedyś If często czułem się, jakbym próbował wbić śrubę młotkiem. Teraz widzę śrubę i wiem, że najlepszym narzędziem jest śrubokręt.

Z biegiem czasu zwiększyłem liczbę wejść do mojego labiryntu dostrajania wydajności. Wciąż przechodzę przez wypróbowane i prawdziwe drzwi, takie jak te, nad którymi znajduje się tylko numer 10046. W przeszłości mówiono mi o magicznych drzwiach, które prowadziły do ​​tęczy i jednorożców tylko po to, by odkryć jeszcze jednego zrzędliwego starego trolla pod most. Na początku sceptycznie podchodziłem do tego, że Lighty jest tak magicznym narzędziem, ale w tym przypadku się myliłem.

Och, opowieści, które mógłbym wam opowiedzieć, ale ta historia dotyczy tak naprawdę tego Performance Tuning Maze. Zawsze sprowadza się do tego labiryntu. Wybierz najlepsze możliwe drzwi, ale tylko doświadczenie może Ci powiedzieć, które z nich są najlepsze. To pozwoli Ci najszybciej znaleźć rozwiązanie. Zrób zły obrót i zacznij od nowa. Nie bój się wielokrotnie wchodzić do labiryntu. Kiedy myślisz, że masz rozwiązanie, przejdź przez labirynt, aby zweryfikować. Ten magiczny labirynt dostrajania wydajności ze wszystkimi tymi cudownymi narzędziami i narzędziami do dostrajania wydajności Oracle stał się teraz jednym z moich ulubionych miejsc do spędzania czasu. Lubię cały czas dodawać kolejne wejścia, mając nadzieję, że każde nowe narzędzie znacznie szybciej doprowadzi mnie do końca labiryntu. Czasami tak, a czasami nie.

Wciąż pamiętam czasy, kiedy przesiadywałem w starym labiryncie „strojenia opartego na proporcjach”, ale przeniosłem się na bardziej zielone pastwiska. Nadal chichoczę, gdy widzę jakiegoś nowego DBA stojącego przed tym starym labiryntem, pokrytego pajęczyną, a oni po prostu nie mogą zrozumieć aluzji. A potem robię się marudny, kiedy krzyczę na nich, żeby zapomnieli o tym labiryncie i przyszli tutaj, gdzie wszyscy się kręcą, tylko po to, by zostać odtrąconym przez kogoś, kto myśli, że zna się lepiej. Cóż, jeśli jeszcze kiedyś ich zobaczymy, możemy powiedzieć „tak ci mówiłem” i dobrze się pośmiać.

Często pracuję z ludźmi, którzy widzą mnie używającego niektórych z tych błyszczących narzędzi. Obserwują, jak wchodzę do labiryntu i wychodzę z drugiej strony z odpowiedzią. Więc ich kolejne oczywiste pytanie brzmi:„czy ja też mogę wejść do tych drzwi?” Chichoczę. „Jasne… śmiało”, mówię im. Uzbrojeni w to fajne narzędzie do tuningu, ale bez wiedzy na temat dostrajania Oracle, podejmują całkiem niezłą, ale słabą próbę. Wzywają mnie do labiryntu i proszą o pomoc w rozwiązaniu problemu. Więc odpalamy narzędzie i patrzymy na nie. Natychmiast rozpoznaję pierwotną przyczynę problemu, ale błyszczące dzwonki i gwizdki narzędzia dezorientują neofitę. W tym momencie mówię teraz po klingońsku. W ciągu kilku sekund mówię „Patrz… właśnie tam… to jest twój problem”. i wracam do tego samego zagadkowego spojrzenia, które podarowałem mojemu mentorowi DBA wiele lat temu. Ci nowicjusze zawsze chcą mieć dostęp do narzędzi i myślą, że mogą nimi posługiwać się jak mistrz. Nie mają pojęcia, co jest w labiryncie ani jak się nim poruszać. Zbyt wiele osób myśli, że narzędzia są sekretnym sosem, podczas gdy tak naprawdę to osoba dzierżąca narzędzie. Niestety, niektórzy ludzie mający dostęp do narzędzi chcą po prostu szybkiej i łatwej odpowiedzi. Nie chcą poświęcać czasu, jak wielu z nas.

Czas, czas podążać za mistrzami. Wszyscy mamy swoją wersję Mt Rushmore. Wyryte w kamieniu. Ludzie tacy jak Millsap, Lewis i Shallahammer, żeby wymienić tylko kilku. Twój Mt Rushmore może mieć inne nazwy lub nawet podobne. Inni, którzy widzą naszą Mt Rushmore, całą osadzoną w kamieniu, nie zdają sobie sprawy, że ci wspaniali ludzie byli naszymi przewodnikami w labiryncie. Pokazali nam, jak poruszać się po labiryncie. Pokazali nam, jak korzystać z narzędzi i jakich narzędzi użyć, kiedy. Ci z nas, którzy uczyli się od mistrzów, starają się jak najlepiej, aby płacić dalej i uczyć innych, chociaż możemy nigdy nie osiągnąć tak wysokich wyżyn i to jest w porządku.

Morał tej historii polega na nauce tych narzędzi, uczeniu się, co robią, a czego nie. Dowiedz się, jakie problemy pomagają rozwiązać. Korzystaj z narzędzi, ale zdaj sobie sprawę, że musisz nauczyć się jak najwięcej, aby móc bezpiecznie chodzić po labiryncie. Niestety muszę tutaj zakończyć moją historię. Ktoś właśnie przyszedł do mojego biura z innym problemem ze strojeniem wydajności. Czas ponownie wejść do labiryntu. Teraz, które drzwi obiorę?


No
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pierwsze kroki z Oracle Application Express-APEX

  2. PL/SQL, jak uciec od pojedynczego cudzysłowu w ciągu?

  3. Kroki synchronizacji trybu gotowości z podstawową bazą danych w Oracle

  4. Podkreślenie nie działa w wyroczni jak klauzula

  5. Jak wyświetlić błędy w sqlplus