sql >> Database >  >> RDS >> Oracle

Het prestatieafstemmingsdoolhof

Op een dag word je wakker en merk je dat je een Oracle-databasebeheerder bent. De goden hebben eindelijk het licht gezien van je ware potentieel en hebben je in staat gesteld om in de beste baan ter wereld te werken! Je begint je DBA-carrière zo helder en pluizig. Je maakt nieuwe databases, verleent privileges, schrijft PL/SQL-code. Het leven is geweldig. Je kunt niet wachten om 's ochtends op te staan, die eerste kop koffie in te schenken en je browser naar je favoriete Oracle-forums te verwijzen, verlangend om vóór de lunch een leven lang kennis op te doen! Als die goden nog steeds naar je glimlachen, kun je zelfs een paar vragen beantwoorden en beloond worden met geweldige punten. Het leven is goed. Het leven is zoet.

Terwijl u zich nog koestert in de gloed van uw nieuwe carrière, komt er iemand naar u toe met een probleem. Een prestatieprobleem. Jij bevriest. Er zit een brok in je keel als je tot het zelfrealisatie komt dat je geen idee hebt hoe je de prestatieproblemen van de database moet oplossen. Wat u zich die dag niet realiseerde, is dat elke DBA voor u in het begin van hun carrière in precies dezelfde situatie heeft gezeten. Toch weerhoudt het de andere persoon er niet van om naar je te kijken en zich af te vragen waarom je het prestatieprobleem niet meteen oplost. U bent tenslotte de DBA en u zou moeten weten hoe u dit moet doen. Dit magische spul noemen ze (cue the angels singing) Performance Tuning . Want het is geschreven, als je een DBA wilt worden en overleeft, en dit werk goed doet, zul je de prestaties moeten afstemmen. Anderen zullen nooit weten wat er achter het gordijn gebeurt terwijl je drankjes maakt en spreuken uitspreekt. Het enige waar ze om geven, is dat je hun prestatieprobleem hebt opgelost en dat ze door kunnen gaan met hun dagelijkse werk.

Op dit punt vroeg in hun carrière besluit elke DBA dat ze meer moeten leren over dit ding dat ze Performance Tuning noemen. . Wat is het? Hoe doe ik het? Hoe kan ik de belangrijkste persoon op mijn IT-afdeling worden omdat ik de geheime saus heb ontdekt om van dat 5 uur durende rapport een wonder van 1 minuut te maken?

Oh, we waren toen zo jong... zo naïef. We dachten dat het makkelijk was. Druk op een paar knoppen, start een paar tools en presto. De oplossing voor het afstemmen van prestaties is gevonden en we zijn geweldig! Het leven leek zo gemakkelijk toen we die weg met gele stenen waagden. Maar op deze weg zijn er geen schrikkraaien. Geen leeuwen. Geen tinnen mannen. Zelfs geen schattige kleine honden genaamd Toto. Nee...deze weg...deze Oracle Performance Tuning-weg staat vol met dingen die veel groter zijn. Op deze weg komen we nutsvoorzieningen en gereedschappen tegen. We ontmoeten Explain Plan. We ontmoeten tkprof en SQLT. We vinden prachtige uitzichten zoals V$SGA_TARGET_ADVICE en V$SESSION_WAIT en zijn tweeling V$SESSION_EVENT (geen identieke tweeling let wel, maar één blik en je weet dat ze verwant zijn).

Dus daar ben je. Uw glanzende DBA-titel staat nog steeds onder uw naam in elke e-mailhandtekening die u verzendt. En je hebt nu al deze prachtige tools tot je beschikking. U hebt ASH en AWR opgepikt omdat uw bedrijf u gelukkig het diagnosepakket heeft geschonken. Je boekenplank is bewapend met geweldige boekdelen zoals deze. (schaamteloze plug ik weet het). Een geweldige kerel op de forums, zoals ik, heeft je ingelicht over Lighty. Je hebt een hele gereedschapskist tot je beschikking. Nee! Geen gereedschapskist….warchest! Kleine landen op andere plekken in de wereld hebben niet het arsenaal dat je tot je beschikking hebt. Waarom... ik zou die supergeheime knop in de SQL Tuning Advisor kunnen aanraken en een van die landen wegblazen, *en* laat SQL ID 98byz76pkyql sneller werken terwijl er nog stoom uit mijn koffie komt... Ik ben zo goed.

Weet je nog die dag dat je je eerste optreden kreeg en die brok in je keel had? Er is nog zo'n dag in je DBA-carrière. Het is de dag dat je het Performance Tuning Maze bereikt (cue de donder en bliksem). Maar dit is geen doolhof. Dit is anders. De meeste doolhoven hebben één ingang en één uitgang, met veel bochten en beslissingen onderweg. Dit doolhof, wel, dit doolhof is duidelijk anders. Dit doolhof heeft vele, vele ingangen. En dit doolhof heeft vele, vele uitgangen. Elke ingang is een ander instrument voor het afstemmen van prestaties. En elke uitgang is een oplossing , maar niet alle oplossingen lossen het prestatieprobleem echt op. En dit is het raadsel waarmee Oracle performance tuning-specialisten worden geconfronteerd. Ik heb een prestatieprobleem. Ik weet dat aan de andere kant van dit doolhof mijn oplossing is. Maar welke ingang kies ik? Boven één ingang staat Explain Plan geschreven. Een andere ingang heeft V$DB_CACHE_ADVICE erop geschreven. Waarom zijn er al deze ingangen, één voor elk gereedschap tot mijn beschikking. Dit is een verhaal uit mijn jeugd en hopelijk, zoals Bilbo aan Frodo schreef, kan dit verhaal je ook helpen bij je avonturen.

Dus ik kies een ingang.

Ik ga het doolhof binnen.

Heb ik een goede keuze gemaakt?

Laten we eens kijken waar dit heen gaat. Verderop maakt de weg een bocht naar links. Maar het is mijn enige keuze, dus ik ga ervoor. Vervolgens kom ik op een kruispunt. Ik kan naar rechts of naar links. Ik maak een bocht naar rechts. Oeps... doodlopende weg. Dus ik ga achteruit en neem in plaats daarvan die links. Weer een doodlopende weg. Drats. Ik ging het doolhof verkeerd binnen. Soms leiden de tools je niet naar een oplossing. Dus ik ga terug naar de ingangen en maak een andere keuze, kies een ander hulpmiddel.

Ik ben nu voor de tweede keer het doolhof ingegaan. Maar de zaken zien er veel beter uit. Ik blijf gaan. Nog maar een paar beurten. Ik kan licht zien, dus ik weet dat ik dicht bij het einde kom. Ja…daar is hij, de uitgang. Ik kom eindelijk uit aan de andere kant van het doolhof. Ik heb mijn oplossing voor het afstemmen van prestaties bij de hand, maar nadat ik de oplossing heb geïmplementeerd, realiseer ik me snel dat dit mijn prestatieprobleem helemaal niet heeft opgelost. Soms kunnen tools u naar oplossingen leiden die niets met uw specifieke probleem te maken hebben. Dus het is tijd voor mijn derde toegang tot het doolhof.

Nu, als een scherpzinnige specialist in prestatieafstemming, realiseerde ik me dat alle ingangen die ik tot nu toe heb gekozen gerelateerd zijn aan de algehele databaseprestaties, maar waar ik echt naar op zoek ben, zijn prestaties die verband houden met een specifieke SQL-instructie. Maar ik weet niet welke SQL-instructie moet worden aangepast. Hoe kan ik erachter komen welke? Nou, drie deuren verder is een ingang naar het doolhof, gemarkeerd met SQL Trace. Direct ernaast is een deur gemarkeerd met EM Search Sessions. Ik gooi een munt op en kies SQL Trace. Kort nadat ik het doolhof betreed, kom ik op een T-splitsing. Als ik naar links ga, ga ik terug naar de deur van EM Search Sessions. Als ik naar rechts ga, is het een rechtstreeks schot naar de uitgang. Natuurlijk ga ik rechts. Maar op dit moment weet ik dat ssoms twee verschillende tools je naar hetzelfde antwoord zullen leiden. Als ik het doolhof verlaat, krijg ik een gratis pas naar tkprof, want tenslotte leiden niet alle SQL Trace-wegen rechtstreeks naar tkprof? Ik heb nu de beledigende SQL-instructie. Maar mijn probleem is nog niet opgelost. Wat te doen?

Ik ga terug naar de ingang van het doolhof. Soms, we krijgen een antwoord van onze afstemmingstools en we moeten nog een keer door het doolhof lopen om door te dringen tot het uiteindelijke antwoord. Deze keer ga ik de SQLT-deur binnen. Een paar bochten en bochten, maar dit doolhofpad is vrij eenvoudig, zo lijkt het tenminste. Ik kom aan het einde, en ik heb niet slechts één antwoord, ik heb veel antwoorden. O...heerlijke dag! Ik heb de moeder van alle tools gevonden.

Ik hoorde andere DBA's spreken over deze wondertools zoals SQLT- en AWR-rapporten. Wat zijn ze geweldig. Deze tools zijn zo geweldig dat sommige DBA's alleen de SQLT- en AWR-rapportingangen zien. Ik dacht altijd dat dit legendes waren, maar hier heb ik eindelijk ook de enige tool gevonden om ze allemaal te regeren ... ok ... één voor elke hand. Ik heb al deze antwoorden tot mijn beschikking. Welk antwoord is nu direct gerelateerd aan mijn prestatieprobleem. Hier heb ik mijn SQLT-rapport en ik heb al deze antwoorden daarin. Welk antwoord is van mij. Welke?!?!? Soms geven tools je te veel informatie. Voor mij, die nieuw is op dit gebied van prestatieafstemming, kan de uitvoer van SQLT net zo goed in Klingon worden geschreven. Maar gelukkig, ik ken een mede-DBA die twee kubussen naast me zit en Klingon spreekt. Ik overhandig hem mijn SQLT-uitvoer. Hij bladert erdoor en binnen 30 seconden wijst hij een klein stukje van het rapport aan en zegt die magische woorden. "Kijk... daar... dat is jouw probleem." Met een vragende blik op mijn gezicht zwaait hij met zijn hand over het rapport en als bij toverslag heeft Google Translate een paar woorden op de pagina veranderd en ik kan nu duidelijk zien dat ik een tabel heb met zeer slechte statistieken. Soms zijn tools met al die antwoorden geweldige tijdsbesparingen voor degenen die weten hoe ze ze moeten gebruiken. Deze Klingon sprekende DBA duwt zijn bril omhoog en onthult een ander deel van het SQLT-rapport. "Kijk hier, hij zegt ... die slechte statistieken dwingen een FTS af" alsof ik verondersteld wordt te weten wat een FTS is op dit punt in mijn carrière. Maar ik wil niet overkomen als een totale n00b, dus ik glimlach en knik instemmend.

Ok ... ik kom dichter bij het oplossen van mijn probleem. Ik weet dat ik slechte statistieken heb. Ik ga terug naar mijn bureau om aan het werk te gaan om eindelijk mijn probleem op te lossen. Terwijl ik langs de waterkoeler loop en de altijd aanwezige menigte van mijn collega's rondga met niets beters te doen dan de hele dag te kletsen, schijnt de zon van een deur naar het doolhof en vangt mijn ooghoek ... slechts één deur. Boven die deur staat een bord met de tekst DBA_TABLES. Nou, zoals elke goede DBA, zeg ik tegen mezelf dat het geen slecht idee is om deze dingen dubbel te controleren. Begin er naar toe te trekken, ik ga de DBA_TABLES-deur binnen en ben opnieuw in het doolhof. Ik draai me snel om en er springt iets naar me op alsof het me wil laten schrikken. Maar ik word hier goed in. Het kan me niet schelen dat een kleine doolhofbewoner erop staat me te vertellen dat deze tafel zich in de tafelruimte GEBRUIKERS bevindt. Ik ben snel om te weten dat dit geen verschil maakt voor mijn probleem bij de hand. Ik druk door en negeer al deze kleine duivels met hun valse informatie. ik druk door. En daar heb ik het ... bevestiging bij de uitgang van het doolhof dat er geen statistieken op deze tafel staan. Hier werd een snelle les geleerd, soms geven de tools je informatie die op deze dag niet relevant voor je is .

Ik ben misschien nieuw in dit DBA-spel, maar ik weet dit wel. Ik moet zien hoe de dingen nu presteren, een verandering aanbrengen en de eventuele prestatieverbetering meten. Dus ik ga terug naar het doolhof. Deze keer ga ik de deur binnen die is gemarkeerd met SQL Developer Autotrace en ik voer de beledigende SQL-instructie uit. Ik krijg niet alleen de runtime van de SQL-instructie, maar ik kan ook het aantal leesbewerkingen en het uitvoeringsplan zien. Ik werk snel de statistieken bij op de tafel waar mijn Klingon-sprekende vriend me op wees. (even terzijde ... ik dacht altijd dat hij een eikel was, maar nu is hij niet zo slecht. Ik kan van deze man leren. Misschien kan ik op een dag ook Klingon spreken). Dan ga ik de SQL Developer Autotrace-deur weer in. Niet alleen ging het uitvoeren van mijn query van 2 minuten naar 2 seconden, maar het lezen daalde aanzienlijk en het Explain Plan verbeterde. Ok, dat laatste is een beetje langdradig. Ik ben nog te groen om te weten dat het Explain Plan beter was, maar als ik er later in mijn carrière op terugkijk, weet ik dat het dat wel was. Ik leer snel dat soms de tools voor het afstemmen van prestaties tot mijn beschikking er niet alleen zijn om de oorzaak van het probleem te vinden, maar ook om te bevestigen dat de oplossing het probleem daadwerkelijk heeft verholpen. En soms zijn de tools om de resultaten te bevestigen niet de tools die ik heb gebruikt om de oorzaak te vinden.

Ik heb mijn eindgebruiker snel laten weten dat het probleem is opgelost. De gebruiker moppert iets wat ik niet helemaal kon verstaan ​​en controleert of zijn leven echt beter is. En dat is wanneer ik het ontvang. Het grootste geschenk dat een DBA ooit zou kunnen krijgen. Dat klopt... Ik kreeg bewondering van gebruikers . Tegenwoordig ben ik een wonderdoener of zo denkt de gebruiker. Terwijl ik in de kubus van deze gebruiker sta, roept hij "HIJ HEEFT HET OPGELOST" en op het juiste moment springt het hoofd van de hele afdeling boven de kubusvormige muren uit als gophers uit de grond. Hoera.. ze juichen! Ik hou van het leven koesterend in de gloed. Waarom de baas zelfs aanbiedt om ons mee te nemen naar de kroeg na het werk..de eerste ronde is voor haar.

Ik loop terug naar mijn bureau, enthousiast om de volgende uitdaging aan te gaan. Deze baan kan niet zoeter zijn.

Ik herinner me mijn eerste ontmoetingen met deze Performance Tuning Maze alsof het gisteren was. Toen we die avond grapjes maakten over pinten in de kroeg, durfde ik niet te spreken over sommige dingen die ik in dat doolhof zag. Mijn collega's zouden het toch niet begrijpen. Ik vertel nooit iemand over mijn gevechten met de MOS-draken. Ik ben te vaak verbrand. Ik vertel nooit iemand hoe saai het is om een ​​zoekopdracht uit te voeren, een uur te wachten op een resultaat, opnieuw te proberen, een uur te wachten, opnieuw te proberen, een uur te wachten..oeps..Ik ben daar ingedommeld. De beproevingen en beproevingen van mijn jeugd kunnen beter voor een andere keer worden bewaard. Misschien schrijf ik nog een boek.

Maar ik heb in die tijd veel geleerd. Na verloop van tijd werd ik beter en koos ik de beste toegang tot het doolhof voor het probleem dat zich voordeed. Het is tenslotte alleen met ervaring dat je beter kunt worden met deze magische prestatie-afstemmingselixers. Ik heb ook geleerd dat de ene tool soms de juiste lijkt voor de klus, om halverwege de afstemming te ontdekken dat een andere tool beter geschikt is.

Ik heb ook geleerd dat alleen door met de tools te werken en te leren waar ze goed in zijn en omgekeerd waar ze niet goed in zijn, ik het beste de juiste tool voor de klus kan kiezen. Vroeger had ik vaak het gevoel dat ik met een hamer op een schroef probeerde te slaan. Nu zie ik een schroef en weet ik dat het beste gereedschap een schroevendraaier is.

In de loop van de tijd heb ik het aantal ingangen tot mijn doolhof voor het afstemmen van prestaties vergroot. Ik ga nog steeds door de beproefde deuren, zoals met een met alleen een nummer erboven, 10046. In het verleden is mij verteld over magische deuren die leidden tot regenbogen en eenhoorns om vervolgens nog een knorrige oude trol te ontdekken onder een brug. Ik was in het begin sceptisch over het feit dat Lighty zo'n magisch hulpmiddel was, maar daar had ik het mis.

Oh de verhalen die ik je zou kunnen vertellen, maar dit verhaal gaat echt over dat Performance Tuning Maze. Het komt altijd neer op dat doolhof. Kies de best mogelijke deur, maar alleen ervaring kan u vertellen welke de beste is. Zo kom je het snelst tot je oplossing. Maak een verkeerde afslag en begin opnieuw. Wees niet bang om het doolhof meerdere keren te betreden. Als je denkt de oplossing te hebben, ga dan door het doolhof om te verifiëren. Dit magische Performance Tuning Maze met al die wonderlijke hulpprogramma's en tools van Oracle voor het afstemmen van prestaties is nu een van mijn favoriete plekken geworden om rond te hangen. Ik vind het leuk om steeds meer ingangen toe te voegen, in de hoop dat elke nieuwe tool me veel sneller naar het einde van het doolhof zal leiden. Soms wel en soms niet.

Ik herinner me nog de dagen dat ik rondhing in het oude doolhof van "ratio-based tuning", maar ik ben overgestapt naar groenere weiden. Ik grinnik nog steeds als ik een nieuwe DBA voor dat oude doolhof zie staan, bedekt met spinnenwebben en ze kunnen de hint gewoon niet begrijpen. En dan word ik chagrijnig als ik tegen ze schreeuw dat ze dat doolhof moeten vergeten en naar hier komen waar iedereen rondhangt, alleen om te worden afgewezen door iemand die denkt dat ze het beter weten. Nou, als we ze ooit weer zien, kunnen we zeggen "Ik zei het je toch" en goed lachen.

Ik werk vaak met mensen die me een aantal van deze glimmende tools zien gebruiken. Ze kijken toe hoe ik het doolhof inga en er aan de andere kant weer uitkom met het antwoord. Dus hun voor de hand liggende volgende vraag is:"kan ik ook door die deur gaan?" Ik grinnik. "Natuurlijk... ga je gang", zeg ik tegen ze. Gewapend met deze coole afstemmingstool, maar zonder kennis over het afstemmen van Oracle, doen ze een redelijk goede, maar zwakke poging. Ze roepen me naar het doolhof en vragen me om hen te helpen het probleem op te lossen. Dus we starten de tool op en bekijken het. Ik herken meteen de oorzaak van het probleem, maar de glimmende toeters en bellen van de tool verwarren de neofiet. Op dit punt spreek ik nu Klingon. Binnen enkele seconden zeg ik "Kijk ... daar ... dat is jouw probleem." en ik krijg dezelfde vragende blik terug die ik zoveel jaren geleden aan mijn DBA-mentor heb gegeven. Deze nieuwelingen willen altijd toegang tot de tools en denken ze als een meester te kunnen hanteren. Ze hebben geen idee wat zich in het doolhof bevindt en ook niet hoe ze erin moeten navigeren. Te veel mensen denken dat het gereedschap de geheime saus is, terwijl het echt de persoon is die het gereedschap hanteert. Helaas willen sommige mensen met toegang tot de tools gewoon een snel en eenvoudig antwoord. Ze willen er geen tijd in steken zoals zovelen van ons.

Tijd, tijd om de meesters te volgen. We hebben allemaal onze versie van Mt Rushmore. Gebeiteld in steen. Mensen zoals Millsap, Lewis en Shallahammer om er maar een paar te noemen. Je Mt Rushmore heeft misschien andere namen of zelfs soortgelijke. Anderen die onze Mt Rushmore bekijken, helemaal in steen gebeiteld, realiseren zich niet dat deze fijne mensen onze gidsen waren in het doolhof. Ze lieten ons zien hoe we door het doolhof moesten navigeren. Ze lieten ons zien hoe we de tools moesten gebruiken en welke tools we wanneer moesten gebruiken. Degenen onder ons die van de meesters hebben geleerd, doen ons uiterste best om het vooruit te betalen en anderen te leren, hoewel we misschien nooit zulke verheven hoogten bereiken, en dat is oké.

De moraal van het verhaal is om deze tools te leren, te leren wat ze doen en wat ze niet doen. Ontdek welke problemen ze helpen aanpakken. Maak gebruik van de tools, maar realiseer je dat je zoveel mogelijk moet leren, zodat je met vertrouwen door het doolhof kunt lopen. Helaas moet ik hier mijn verhaal beëindigen. Iemand kwam net mijn kantoor binnen met een ander probleem met het afstemmen van de prestaties. Tijd om het doolhof weer in te gaan. Welke deur moet ik nu nemen?


  1. Hoe fouten in de onjuiste tekenreekswaarde op te lossen?

  2. Hoe werkt het PAAS Servicemodel?

  3. MySQL DATEDIFF() vs TIMESTAMPDIFF():wat is het verschil?

  4. Voorkom nummerconflicten met Microsoft SQL-reeksen