sql >> Databáze >  >> RDS >> Oracle

Maze ladění výkonu

Jednoho dne se probudíte a zjistíte, že jste správce databáze Oracle. Bohové konečně spatřili světlo vašeho skutečného potenciálu a umožnili vám pracovat v té nejlepší práci na světě! Svou kariéru DBA začínáte s rozzářenýma očima a huňatým ocasem. Vytváříte nové databáze, udělujete oprávnění, píšete PL/SQL kód. Život je skvělý. Nemůžete se dočkat, až ráno vstanete, nalijete si první šálek kávy a nasměrujete svůj prohlížeč na svá oblíbená fóra Oracle a chcete před obědem nasát celoživotní znalosti! Pokud se na vás tito bohové stále usmívají, můžete dokonce odpovědět na několik otázek a získat skvělé body. Život je dobrý. Život je sladký.

Zatímco se stále vyhříváte v záři své nově nalezené kariéry, někdo za vámi přijde s problémem. Problém s výkonem. Zmrzneš. Když dojdete k seberealizaci, nemáte ponětí, jak vyřešit problémy s výkonem databáze, máte malý knedlík v krku. To, co jste si toho dne neuvědomili, je, že každý DBA před vámi byl na začátku své kariéry v přesně stejné situaci. Přesto to nezabrání tomu, aby se na vás druhá osoba podívala a přemýšlela, proč problém s výkonem neřešíte okamžitě. Koneckonců, vy jste DBA a měli byste vědět, jak to udělat. Tato magická věc, kterou nazývají (narážka na zpěv andělů) Ladění výkonu . Bylo napsáno, že pokud chcete být DBA a přežít a dělat tuto práci dobře, budete muset vyladit výkon. Ostatní se nikdy nedozví, co se děje za oponou, když vyrábíte lektvary a kouzlíte. Jediné, na čem jim záleží, je, že jste vyřešili jejich problém s výkonem a oni mohou pokračovat ve své každodenní práci.

V tomto okamžiku na začátku své kariéry se každý DBA rozhodne, že se potřebuje dozvědět více o této věci, kterou nazývá Ladění výkonu . Co je to? Jak to udělám? Jak se mohu stát nejdůležitější osobou ve svém IT oddělení, protože jsem objevil tajnou omáčku, jak proměnit pětihodinovou zprávu v minutový zázrak?

Oh, tehdy jsme byli tak mladí...tak naivní. Mysleli jsme si, že je to snadné. Stiskněte několik tlačítek, zapněte několik nástrojů a presto. Řešení pro ladění výkonu bylo nalezeno a jsme skvělí! Život se zdál tak snadný, když jsme se vydali po té žluté cihlové cestě. Ale na této cestě nejsou žádné strašáky. Žádní lvi. Žádní plecháčci. Dokonce ani žádné roztomilé pejsky jménem Toto. Ne…tato cesta…tato cesta Oracle Performance Tuning je plná věcí mnohem větších. Na této cestě potkáváme pomůcky a nářadí. Setkáváme se s plánem Explain. Setkáváme se s tkprof a SQLT. Najdeme nádherné pohledy jako V$SGA_TARGET_ADVICE a V$SESSION_WAIT a jejich dvojče V$SESSION_EVENT (nevadí vám to jednovaječná dvojčata, ale stačí jeden pohled a víte, že spolu souvisí).

Tak tady to máte. Váš lesklý titul DBA stále sedí pod vaším jménem v každém e-mailovém podpisu, který odešlete. A nyní máte všechny tyto úžasné nástroje k dispozici. Vybrali jste si ASH a AWR, protože vám vaše společnost naštěstí darovala balíček Diagnostics Pack. Vaše knihovna je vyzbrojena skvělými svazky, jako je tento. (Nestydná zástrčka já vím). Nějaký skvělý člověk na fóru, jako já, tě navedl k Lightymu. K dispozici máte celou sadu nástrojů. Ne! Ne toolbox….warchest! Malé země na jiných místech světa nemají arzenál, který máte k dispozici. Proč…Mohl jsem se dotknout toho supertajného tlačítka v SQL Tuning Advisor a odfouknout jednu z těchto zemí, *a* aby SQL ID 98byz76pkyql běželo rychleji, zatímco z mé kávy stále stoupá pára…Jsem tak dobrý.

Pamatujete si na ten den, kdy jste dostali své první představení a měli jste knedlík v krku? Ve vaší kariéře DBA je další takový den. Je to den, kdy dosáhnete labyrintu ladění výkonu (vyvolá hromy a blesky). Ale tohle není žádné bludiště. Tohle je jiné. Většina bludišť má jeden vchod a jeden východ, s mnoha odbočkami a rozhodnutími na cestě. Toto bludiště, proč, toto bludiště je zjevně jiné. Toto bludiště má mnoho, mnoho vchodů. A toto bludiště má mnoho, mnoho východů. Každý vstup je jiný nástroj pro ladění výkonu. A každý východ je řešení , ale ne všechna řešení skutečně řeší problém s výkonem. A to je hlavolam, kterému čelí specialisté na ladění výkonu Oracle. Mám problém s výkonem. Vím, že na druhé straně tohoto bludiště je moje řešení. Ale jaký vchod si vybrat? Jeden vchod má nad sebou napsaný plán Explain. Další vchod má napsáno V$DB_CACHE_ADVICE. Proč jsou všechny tyto vchody, jeden pro každý nástroj, který mám k dispozici. Toto je příběh mého mládí a doufejme, jak napsal Bilbo Frodovi, že vám tento příběh může pomoci i ve vašich dobrodružstvích.

Takže vybírám vchod.

Vstupuji do bludiště.

Udělal jsem dobře?

No uvidíme, kam to povede. Vpředu silnice odbočuje doleva. Ale je to moje jediná volba, takže do toho jdu. Dále přicházím na křižovatku. Můžu jít vpravo nebo vlevo. Zatáčím doprava. Jejda...slepá ulička. Tak jsem se vrátil a vzal to doleva. Další slepá ulička. Dráty. Špatně jsem vstoupil do bludiště. Někdy vás nástroje nenavedou k žádnému řešení. Vracím se tedy ke vchodům a dělám jinou volbu, vybral jsem si jiný nástroj.

Nyní jsem vstoupil do bludiště podruhé. Ale věci vypadají mnohem lépe. jdu dál. Ještě pár zatáček. Vidím světlo, takže vím, že se blížím ke konci. Ano...tady to je, východ. Konečně vyjdu na druhou stranu bludiště. Mám své řešení pro ladění výkonu v ruce, ale po implementaci řešení rychle zjistím, že to můj problém s výkonem vůbec nevyřešilo. Někdy vás nástroje mohou dovést k řešením, která nemají žádný vliv na váš konkrétní problém. Takže je čas na můj třetí vstup do bludiště.

Nyní, jako bystrý specialista na ladění výkonu, jsem si uvědomil, že všechny vstupy, které jsem si dosud vybral, souvisejí s celkovým výkonem databáze, ale to, co opravdu hledám, je výkon související s konkrétním příkazem SQL. Ale nevím, který SQL příkaz potřebuje vyladit. Jak zjistím který? O tři dveře níže je vchod do bludiště označeného SQL Trace. Hned vedle jsou dveře označené EM Search Sessions. Hodím si mincí a volím SQL Trace. Krátce poté, co vstoupím do bludiště, přijdu na křižovatku tvaru T. Pokud půjdu doleva, vrátí mě to zpět ke dveřím EM Search Sessions. Pokud půjdu doprava, je to přímý výstřel k východu. Přirozeně jdu vpravo. Ale právě v tuto chvíli vím, že sněkdy vás ke stejné odpovědi dovedou dva různé nástroje. Když opouštím bludiště, dostávám volný průchod do tkprof, protože koneckonců nevedou všechny cesty SQL Trace přímo k tkprof? Nyní mám problematický příkaz SQL. Ale můj problém ještě není vyřešen. Co dělat?

Vracím se zpět ke vchodu do bludiště. Někdy dostaneme odpověď z našich ladicích nástrojů a musíme provést další proběhnutí bludištěm, abychom se dostali ke konečné odpovědi. Tentokrát vstupuji do dveří SQLT. Pár zvratů, ale tato cesta v bludišti je docela snadná, nebo se to alespoň zdá. Dostávám se na konec a nemám jen jednu odpověď, mám mnoho odpovědí. Ó...slavný den! Našel jsem matku všech nástrojů.

Slyšel jsem další DBA mluvit o těchto zázračných nástrojích, jako jsou SQLT a AWR Reports. Jak jsou úžasné. Tyto nástroje jsou tak skvělé, že někteří správci databází vidí pouze vstupy SQLT a AWR Report. Vždycky jsem si myslel, že to jsou legendy, ale i tady jsem konečně našel jediný nástroj, jak jim všem vládnout… ok… jeden pro každou handu. Všechny tyto odpovědi mám k dispozici. Nyní, která odpověď přímo souvisí s mým problémem s výkonem. Zde mám svou zprávu SQLT a mám v ní všechny tyto odpovědi. Která odpověď je moje. Který?!?!? Někdy vám nástroje poskytnou příliš mnoho informací. Pro mě, kdo je v této věci s laděním výkonu nový, může být výstup SQLT také napsán v klingonštině. Ale mám štěstí, znám kolegu DBA, který sedí dvě kostky ode mě a mluví klingonsky. Předám mu svůj SQLT výstup. Prolistuje to a během 30 sekund ukáže na jednu malou část zprávy a řekne ta kouzelná slova. "Vidíš...tady...to je tvůj problém." S tázavým výrazem na mé tváři mávne rukou nad zprávou a jako mávnutím kouzelného proutku překladač Google změnil pár slov na stránce a já teď jasně vidím, že mám tabulku s velmi špatnými statistikami. Nástroje se všemi těmito odpověďmi někdy skvěle šetří čas těm, kteří vědí, jak je používat. Tento klingonsky mluvící DBA si zvedne brýle a odhalí další část zprávy SQLT. „Podívejte se, jak říká… ty špatné statistiky si vynucují FTS“, jako bych měl v tuto chvíli své kariéry vědět, co je FTS. Ale nechci vypadat jako totální n00b, takže se usměji a přikývnu na souhlas.

Dobře... blížím se k vyřešení mého problému. Vím, že mám špatné statistiky. Vracím se ke svému stolu s touhou pustit se do práce, abych konečně vyřešil svůj problém. Když procházím kolem chladiče vody a obcházím všudypřítomný zástup svých spolupracovníků a nemám na práci nic lepšího, než si celý den povídat, od jedněch dveří do bludiště svítí slunce a zachytí koutek mého oka...jen jedny dveře. Nad těmi dveřmi je nápis DBA_TABLES. Jako každý správný DBA si říkám, že není špatný nápad si tyto věci zkontrolovat. Začnu to přitahovat, vstoupím do dveří DBA_TABLES a jsem znovu v bludišti. Rychle se otočím a něco na mě vyskočí, jako by mě chtělo polekat. Ale začínám být v tomto dobrý. Je mi jedno, že mi nějaký malý obyvatel bludiště trvá na tom, že tento stůl je umístěn v tabulkovém prostoru UŽIVATELÉ. Rychle zjišťuji, že to nic nemění na mém problému. Tlačím dál a ignoruji všechny tyto malé skřety s jejich falešnými informacemi. tlačím dál. A tady to mám… potvrzení u východu z bludiště, že na tomto stole nejsou žádné statistiky. Zde jsme dostali rychlou lekci, někdy vám nástroje poskytnou informace, které pro vás v tento den nejsou relevantní .

Možná jsem v této hře DBA nový, ale vím to. Potřebuji vidět, jak věci fungují nyní, provést změnu a změřit případné zlepšení výkonu. Vracím se tedy zpět do bludiště. Tentokrát vstoupím do dveří označených SQL Developer Autotrace a provedu závadný SQL příkaz. Nejenže získám dobu běhu příkazu SQL, ale také vidím počet čtení a plán provádění. Rychle aktualizuji statistiky na stole, na který mě upozornil můj klingonsky mluvící přítel. (Rychle stranou... Myslel jsem si, že je to blbec, ale teď není tak špatný. Od tohohle chlapa se můžu učit. Možná jednoho dne budu taky mluvit klingonsky). Poté znovu vstoupím do dveří SQL Developer Autotrace. Nejen, že se provádění mého dotazu zkrátilo ze 2 minut na 2 sekundy, ale výrazně klesla četnost a zlepšil se plán vysvětlení. Ok, ta poslední část je trochu napínavá. Stále jsem příliš zelený na to, abych věděl, že plán Explain byl lepší, ale když se na něj později v kariéře podívám zpět, vím, že byl. Rychle zjišťuji, ženěkdy jsou nástroje pro ladění výkonu, které mám k dispozici, nejen proto, aby pomohly najít hlavní příčinu problému, ale jsou zde také proto, aby potvrdily, že řešení problém skutečně vyřešilo. A někdy nástroje k potvrzení výsledků nejsou nástroje, které jsem použil k nalezení hlavní příčiny.

Rychle jsem informoval svého koncového uživatele, že problém je vyřešen. Uživatel zabručí něco, co jsem nemohl úplně rozeznat, a zkontroluje, zda je jeho život skutečně lepší. A to je, když to přijímám. Největší dar, jaký kdy DBA mohl dostat. Správně... Obdržel jsem obdiv uživatelů . Dnes jsem zázračný pracovník nebo si to alespoň uživatel myslí. Když stojím v krychlovém prostoru tohoto uživatele, vykřikne „OPRAVIL TO“ a na zavolání se hlava celého oddělení vynořila přes krychlové stěny jako skřeti ze země. Hurá.. fandí! Miluji život vyhřívající se v záři. Proč nám šéfová vůbec nabízí, že nás po práci vezme do hospody...první kolo je na ní.

Vracím se ke svému stolu, dychtivý přijmout další výzvu. Tato práce nemůže být sladší.

Pamatuji si svá první setkání s tímto Performance Tuning Maze, jako by to bylo včera. Když jsme ten večer v hospodě žertovali o půllitrech, neodvážil jsem se mluvit o některých věcech, které jsem v tom bludišti viděl. Moji spolupracovníci by to stejně nepochopili. Nikdy nikomu neřeknu o svých bojích s draky MOS. Mockrát jsem se spálil. Nikdy nikomu neříkám, jak je nudné spustit dotaz, hodinu čekat na výsledek, zkoušet znovu, čekat hodinu, zkoušet znovu, čekat hodinu..ups..tam jsem si zdřímnul. Zkoušky a soužení mého mládí je lepší si nechat na jindy. Možná napíšu další knihu.

Ale v té době jsem se hodně naučil. Postupem času jsem se zdokonaloval a vybíral nejlepší vstup do bludiště pro daný problém. S těmito magickými elixíry ladění výkonu se člověk může zlepšit pouze se zkušenostmi. Zjistil jsem také, že někdy se zdá, že jeden nástroj je pro tuto práci ten správný, jen abych v průběhu ladění zjistil, že jiný nástroj je vhodnější.

Také jsem se naučil, že jen práce s nástroji a učení se, v čem jsou dobří, a naopak, v čem nejsou dobří, si mohu nejlépe vybrat vhodný nástroj pro tuto práci. Kdysi jsem měl If často pocit, jako bych se snažil zatlouct šroub kladivem. Teď vidím šroub a vím, že nejlepším nástrojem je šroubovák.

Postupem času jsem rozšířil počet vstupů do mého výkonnostního tuningového bludiště. Stále procházím osvědčenými a skutečnými dveřmi, jako jsou ty, které mají nad sebou jen číslo, 10046. V minulosti mi bylo řečeno o magických dveřích, které vedly k duhám a jednorožcům, jen abych objevil ještě jednoho nevrlého starého trolla pod most. Zpočátku jsem byl skeptický k tomu, že Lighty je tak kouzelný nástroj, ale v tom jsem se mýlil.

Ach ty pohádky, které bych vám mohl vyprávět, ale tento příběh je ve skutečnosti o bludišti ladění výkonu. Vždycky to přijde do toho bludiště. Vyberte si ty nejlepší dveře, ale pouze zkušenost vám řekne, které jsou nejlepší. To vám umožní dospět k vašemu řešení nejrychleji. Špatně odbočte a začněte znovu. Nebojte se vstoupit do bludiště vícekrát. Když si myslíte, že máte řešení, projděte bludištěm a ověřte. Toto kouzelné bludiště pro ladění výkonu se všemi těmi úžasnými nástroji a nástroji pro ladění výkonu Oracle se nyní stalo jedním z mých oblíbených míst, kam se scházet. Rád neustále přidávám další vchody a doufám, že každý nový nástroj mě dovede na konec bludiště mnohem rychleji. Někdy ano a někdy ne.

Stále si pamatuji doby, kdy jsem se poflakoval ve starém „ladění založeném na poměru“, ale přešel jsem na zelenější pastviny. Pořád se směju, když vidím, jak před tím starým bludištěm stojí nějaký nový DBA, pokrytý pavučinou a prostě to nedokážou přijmout. A pak jsem naštvaný, když na ně křičím, aby zapomněli na to bludiště a přišli sem, kde se všichni ostatní potloukají, jen aby mě zavrhl někdo, kdo si myslí, že to vědí lépe. Pokud je ještě někdy uvidíme, můžeme říct „Říkal jsem ti to“ a dobře se zasmát.

Často pracuji s lidmi, kteří mě vidí používat některé z těchto nablýskaných nástrojů. Sledují mě, jak vcházím do bludiště a vycházím z druhé strany s odpovědí. Jejich další zřejmá otázka tedy zní:„Mohu do těch dveří taky? zasměji se. "Jasně... jděte do toho," říkám jim. Vyzbrojeni tímto skvělým nástrojem pro ladění, ale nulovými znalostmi o tom, jak vyladit Oracle, dělají docela dobrý, ale chabý pokus. Volají mě do bludiště a žádají mě, abych jim pomohl vyřešit problém. Zapálíme tedy nástroj a podíváme se na něj. Okamžitě poznávám hlavní příčinu problému, ale lesklé zvonky a píšťalky tohoto nástroje začínají matoucí. V tuto chvíli mluvím klingonsky. Během několika sekund řeknu:„Vidíš… tady… to je tvůj problém.“ a vrací se mi ten samý tázavý pohled, který jsem před mnoha lety poskytl svému mentorovi DBA. Tito nováčci vždy chtějí mít přístup k nástrojům a myslí si, že je mohou ovládat jako mistr. Nemají ponětí, co je v bludišti, ani ponětí, jak se v něm pohybovat. Příliš mnoho lidí si myslí, že nástroje jsou tajnou omáčkou, když je to skutečně osoba, která nástroj ovládá. Je smutné, že někteří lidé s přístupem k nástrojům chtějí jen rychlou a snadnou odpověď. Nechtějí tomu věnovat čas jako mnoho z nás.

Čas, čas následovat mistry. Všichni máme svou verzi Mt Rushmore. Vytesáno do kamene. Lidé jako Millsap, Lewis a Shallahammer, abychom jmenovali alespoň některé. Váš Mt Rushmore může mít jiná jména nebo dokonce podobná. Jiní, kteří si prohlížejí naši horu Rushmore, vytesanou do kamene, si neuvědomují, že tito skvělí lidé byli našimi průvodci v bludišti. Ukázali nám, jak se pohybovat v bludišti. Ukázali nám, jak nástroje používat a které nástroje kdy použít. Ti z nás, kteří se učili od mistrů, se ze všech sil snažíme splácet to dopředu a učit ostatní, i když možná nikdy nedosáhneme tak vznešených výšin, a to je v pořádku.

Morálka příběhu je naučit se tyto nástroje, naučit se, co dělají a co nedělají. Zjistěte, které problémy pomáhají řešit. Využijte nástroje, ale uvědomte si, že se musíte naučit co nejvíce, abyste mohli s jistotou procházet bludištěm. Bohužel zde musím svůj příběh ukončit. Někdo právě přišel do mé kanceláře s dalším problémem s laděním výkonu. Je čas znovu vstoupit do bludiště. Které dveře si teď vezmu?


  1. Jak používat třídu databasehelper ve třídě asynctask pracující na jiné třídě

  2. Proaktivní monitorování PostgreSQL (úhel vývojářského studia / poradců)

  3. Vysvětlení velikosti úložiště „datetimeoffset“ na serveru SQL

  4. Složený primární klíč v django