Oracle
 sql >> Database >  >> RDS >> Oracle

Il labirinto dell'accordatura delle prestazioni

Un giorno, ti svegli e scopri di essere un amministratore di database Oracle. Gli dei hanno finalmente visto la luce del tuo vero potenziale e ti hanno permesso di lavorare nel miglior lavoro del mondo! Inizi la tua carriera nel DBA con gli occhi brillanti e la coda folta. Stai creando nuovi database, concedendo privilegi, scrivendo codice PL/SQL. La vita è bella. Non vedi l'ora di alzarti la mattina, versare la prima tazza di caffè e puntare il browser verso i tuoi forum Oracle preferiti, desiderosi di assorbire tutta la conoscenza di una vita prima di pranzo! Se quegli dei ti stanno ancora sorridendo, potresti persino rispondere ad alcune domande e essere ricompensato con punti fantastici. La vita è bella. La vita è dolce.

Mentre ti stai ancora crogiolando nel bagliore della tua nuova carriera, qualcuno viene da te con un problema. Un problema di prestazioni. Ti congeli. C'è un piccolo groppo in gola quando arrivi all'auto-realizzazione che non hai idea di come risolvere i problemi di prestazioni del database. Quello che non ti sei reso conto quel giorno è che tutti i DBA prima di te si sono trovati esattamente nella stessa situazione all'inizio della loro carriera. Tuttavia, non impedisce all'altra persona di guardarti chiedendoti perché non stai risolvendo immediatamente il problema delle prestazioni. Dopotutto, sei il DBA e dovresti sapere come fare queste cose. Questa roba magica la chiamano (indica il canto degli angeli) Accordatura della performance . Perché è stato scritto, se hai intenzione di diventare un DBA e sopravvivere, e fare bene questo lavoro, dovrai ottimizzare le prestazioni. Gli altri non sapranno mai cosa succede dietro le quinte mentre fai pozioni e lanci incantesimi. A loro interessa solo che tu abbia risolto il loro problema di prestazioni e che possano andare avanti con il loro lavoro quotidiano.

A questo punto all'inizio della propria carriera, ogni DBA decide di aver bisogno di saperne di più su questa cosa che chiamano ottimizzazione delle prestazioni . Che cos'è? Come lo faccio? Come posso diventare la persona più importante nel mio reparto IT perché ho scoperto il segreto per trasformare quel rapporto di 5 ore in un miracolo di 1 minuto?

Oh, eravamo così giovani allora... così ingenui. Abbiamo pensato che fosse facile. Premi alcuni pulsanti, avvia alcuni strumenti e presto. La soluzione per l'ottimizzazione delle prestazioni è stata trovata e siamo meravigliosi! La vita sembrava così facile mentre ci avventuravamo lungo quella strada di mattoni gialli. Ma su questa strada non ci sono corvi spaventosi. Niente leoni. Niente uomini di latta. Nemmeno dei simpatici cagnolini di nome Toto. No... questa strada... questa strada di Oracle Performance Tuning è piena di cose molto più grandi. Su questa strada, incontriamo utilità e strumenti. Incontriamo Explain Plan. Incontriamo tkprof e SQLT. Troviamo panorami meravigliosi come V$SGA_TARGET_ADVICE e V$SESSION_WAIT e il suo gemello V$SESSION_EVENT (non due gemelli identici badate bene, ma uno sguardo e saprete che sono imparentati).

Quindi eccoti qui. Il tuo brillante titolo DBA è ancora sotto il tuo nome in ogni firma e-mail che invii. E ora hai tutti questi meravigliosi strumenti a tua disposizione. Hai acquistato ASH e AWR perché fortunatamente la tua azienda ti ha regalato il Diagnostics Pack. La tua libreria è armata di grandi volumi come questo. (Spina spudorata lo so). Un bravo ragazzo sui forum, come me, ti ha consigliato Lighty. Hai un'intera cassetta degli attrezzi a tua disposizione. No! Non una cassetta degli attrezzi... il più forte! I piccoli paesi in altri luoghi del mondo non hanno l'arsenale che hai a tua disposizione. Perché... potrei toccare quel pulsante super segreto in SQL Tuning Advisor e spazzare via uno di quei paesi, *e* fai in modo che l'ID SQL 98byz76pkyql funzioni più velocemente mentre il mio caffè ha ancora del vapore che sale da esso... Sono così bravo.

Ricordi quel giorno in cui hai ricevuto il tuo primo problema di prestazioni e avevi quel nodo in gola? C'è un altro giorno come quello nella tua carriera di DBA. È il giorno in cui raggiungi il Labirinto dell'accordatura delle prestazioni (segnala il tuono e il fulmine). Ma questo non è un labirinto. Questo è diverso. La maggior parte dei labirinti ha un'entrata e un'uscita, con molte svolte e decisioni lungo il percorso. Questo labirinto, perché, questo labirinto è ovviamente diverso. Questo labirinto ha molti, molti ingressi. E questo labirinto ha molte, molte uscite. Ogni ingresso è uno strumento di ottimizzazione delle prestazioni diverso. E ogni uscita è una soluzione , ma non tutte le soluzioni risolvono davvero il problema delle prestazioni. E questo è l'enigma che gli specialisti dell'ottimizzazione delle prestazioni Oracle devono affrontare. Ho un problema di prestazioni. So che dall'altra parte di questo labirinto c'è la mia soluzione. Ma quale ingresso scelgo? Un ingresso ha scritto Spiega il piano sopra di esso. Un'altra entrata ha la scritta V$DB_CACHE_ADVICE. Perché ci sono tutti questi ingressi, uno per ogni strumento a mia disposizione. Questa è una storia della mia giovinezza e spero che, come scrisse Bilbo a Frodo, questa storia possa aiutare anche te nelle tue avventure.

Quindi scelgo un ingresso.

Entro nel labirinto.

Ho fatto una buona scelta?

Bene, vediamo dove va a finire. Più avanti, la strada svolta a sinistra. Ma è la mia unica scelta quindi ci vado. Poi arrivo a un incrocio. Posso andare a destra o a sinistra. Faccio una svolta a destra. Ops... vicolo cieco. Quindi torno indietro e prendo quello a sinistra invece. Un altro vicolo cieco. Draghi. Sono entrato nel labirinto in modo errato. A volte, gli strumenti non ti portano a nessuna soluzione. Quindi torno agli ingressi e faccio un'altra scelta, ho scelto uno strumento diverso.

Ora sono entrato nel labirinto una seconda volta. Ma le cose stanno andando molto meglio. Continuo. Solo qualche giro in più. Riesco a vedere la luce, quindi so che mi sto avvicinando alla fine. Sì... eccola, l'uscita. Finalmente esco dall'altra parte del labirinto. Ho in mano la mia soluzione di ottimizzazione delle prestazioni, ma dopo aver implementato la soluzione, mi rendo subito conto che questo non ha affatto risolto il mio problema di prestazioni. A volte, gli strumenti possono portarti a soluzioni che non hanno attinenza con il tuo problema specifico. Quindi è il momento del mio terzo ingresso nel labirinto.

Ora, essendo un astuto specialista dell'ottimizzazione delle prestazioni, mi sono reso conto che tutti gli ingressi che ho scelto finora sono correlati alle prestazioni complessive del database, ma quello che sto veramente cercando sono le prestazioni relative a una specifica istruzione SQL. Ma non so quale istruzione SQL necessita di ottimizzazione. Come posso capire quale? Ben tre porte più in basso c'è un ingresso al labirinto contrassegnato da SQL Trace. Proprio accanto c'è una porta contrassegnata da Sessioni di ricerca EM. Lancio una moneta e scelgo SQL Trace. Poco dopo essere entrato nel labirinto, arrivo a un incrocio a T. Se vado a sinistra, mi riporta alla porta delle sessioni di ricerca EM. Se vado a destra, è un tiro dritto verso l'uscita. Naturalmente vado a destra. Ma è in questo momento che so che a volte due strumenti diversi ti porteranno alla stessa risposta. Quando esco dal labirinto, mi viene dato un pass gratuito per tkprof perché dopo tutto, tutte le strade di SQL Trace non portano direttamente a tkprof? Ora ho l'istruzione SQL offensiva. Ma il mio problema non è ancora risolto. Cosa fare?

Torno all'ingresso del labirinto. A volte, otteniamo una risposta dai nostri strumenti di ottimizzazione e dobbiamo eseguire un'altra corsa nel labirinto per approfondire la risposta finale. Questa volta entro dalla porta SQLT. Alcuni colpi di scena, ma questo percorso labirinto è piuttosto facile, o almeno così sembra. Arrivo alla fine e non ho solo una risposta, ho molte risposte. Oh... giorno glorioso! Ho trovato la madre di tutti gli strumenti.

Ho sentito altri DBA parlare di questi strumenti miracolosi come SQLT e AWR Reports. Come sono meravigliosi. Questi strumenti sono così eccezionali che alcuni DBA vedono solo le entrate del report SQLT e AWR. Ho sempre pensato che fosse roba da leggende, ma alla fine anche io ho trovato l'unico strumento per dominarle tutte...ok...una per mano. Ho tutte queste risposte a mia disposizione. Ora, quale risposta è direttamente correlata al mio problema di prestazioni. Qui ho il mio report SQLT e ho tutte queste risposte in esso contenute. Quale risposta è mia. Quale?!?!? A volte, gli strumenti ti forniscono troppe informazioni. Per me, che è nuovo in questa cosa di ottimizzazione delle prestazioni, l'output di SQLT potrebbe anche essere scritto in Klingon. Ma fortunato me, conosco un collega DBA che si siede due cubi sotto di me che parla Klingon. Gli passo il mio output SQLT. Lo sfoglia ed entro 30 secondi indica una piccola sezione del rapporto e pronuncia quelle parole magiche. "Vedi... proprio lì... questo è il tuo problema." Con uno sguardo interrogativo sul mio viso, agita la mano sul rapporto e come per magia, Google Translate ha cambiato alcune parole sulla pagina e ora posso vedere chiaramente che ho una tabella con statistiche pessime. A volte, gli strumenti con tutte queste risposte fanno risparmiare molto tempo a coloro che sanno come usarli. Questo DBA che parla Klingon alza gli occhiali e rivela un'altra sezione del rapporto SQLT. "Vedi qui dice ... quelle statistiche negative stanno costringendo un FTS" come se dovessi sapere cos'è un FTS a questo punto della mia carriera. Ma non voglio sembrare un n00b totale, quindi sorrido e annuisco in accordo.

Ok... mi sto avvicinando alla risoluzione del mio problema. So di avere pessime statistiche. Sto tornando alla mia scrivania impaziente di mettermi al lavoro per risolvere finalmente il mio problema. Mentre passo vicino al refrigeratore d'acqua e giro tra la folla sempre presente dei miei colleghi senza niente di meglio da fare tutto il giorno se non chiacchierare, il sole splende da una porta del labirinto e cattura la coda dell'occhio... solo una porta. Sopra quella porta c'è un cartello che dice DBA_TABLES. Bene, come ogni buon DBA, mi dico che non è una cattiva idea ricontrollare queste cose. Inizio attratto da esso, entro nella porta DBA_TABLES e sono di nuovo nel labirinto. Faccio una rapida svolta e qualcosa mi salta addosso come per spaventarmi. Ma sto diventando bravo in questo. Non mi interessa che qualche piccolo abitante di labirinti insista nel dirmi che questa tabella risiede nel tablespace USERS. Sono pronto a sapere che questo non fa alcuna differenza per il mio problema a portata di mano. Insisto e ignoro tutti questi piccoli folletti con le loro informazioni spurie. io vado avanti. Ed ecco qua... la conferma all'uscita del labirinto che non ci sono statistiche su questo tavolo. Qui è stata appresa una breve lezione, a volte gli strumenti ti forniscono informazioni che non sono rilevanti per te in questo giorno .

Potrei essere nuovo in questo gioco DBA, ma lo so. Ho bisogno di vedere come stanno andando le cose ora, apportare una modifica e misurare l'eventuale miglioramento delle prestazioni. Quindi torno al labirinto. Questa volta, entro nella porta contrassegnata da SQL Developer Autotrace ed eseguo l'istruzione SQL incriminata. Non solo ottengo il runtime dell'istruzione SQL, ma posso vedere il numero di letture e il piano di esecuzione. Aggiornerò rapidamente le statistiche sul tavolo che il mio amico di lingua klingon mi ha indicato. (Tra parentesi... pensavo fosse un idiota, ma ora non è poi così male. Posso imparare da questo ragazzo. Forse un giorno anch'io parlerò Klingon). Quindi entro di nuovo nella porta di SQL Developer Autotrace. Non solo l'esecuzione della mia query è passata da 2 minuti di esecuzione a 2 secondi, ma le letture sono diminuite in modo significativo e l'Explain Plan è migliorato. Ok, quell'ultima parte è un po' tirata. Sono ancora troppo verde per sapere che l'Explain Plan era migliore, ma ripensandoci più avanti nella mia carriera so che lo era. Imparo rapidamente che a volte, gli strumenti di ottimizzazione delle prestazioni a mia disposizione non sono solo lì per aiutare a trovare la causa principale del problema, ma sono anche lì per confermare che la soluzione ha effettivamente risolto il problema. E a volte, gli strumenti per confermare i risultati non sono gli strumenti che ho usato per trovare la causa principale.

Ho subito informato il mio utente finale che il problema è stato risolto. L'utente brontola qualcosa che non riesco a capire e controlla se la sua vita è effettivamente migliore. Ed è allora che lo ricevo. Il regalo più grande che un DBA possa mai ricevere. Esatto... Ho ricevuto l'adorazione degli utenti . Oggi sono un operatore di miracoli o almeno così pensa l'utente. Mentre mi trovo nel cubicolo di questo utente, grida "L'HA FISSATO" e al momento giusto, la testa dell'intero dipartimento salta fuori dalle pareti del cubicolo come gopher da terra. Evviva..si acclamano! Amo la vita crogiolandomi nel bagliore. Perché il capo si offre anche di portarci fuori al pub dopo il lavoro... il primo round tocca a lei.

Torno alla mia scrivania, desideroso di affrontare la prossima sfida. Questo lavoro non potrebbe essere più dolce.

Ricordo i miei primi incontri con questo Performance Tuning Maze come se fosse ieri. Quando quella sera stavamo scherzando su pinte al pub, non osavo parlare di alcune delle cose che ho visto in quel labirinto. I miei colleghi non capirebbero comunque. Non racconto mai a nessuno dei miei combattimenti con i draghi MOS. Sono stato bruciato troppe volte. Non dico mai a nessuno quanto sia noioso eseguire una query, attendere un'ora per un risultato, riprovare, attendere un'ora, riprovare, attendere un'ora..oops..mi sono appisolato lì. Le prove e le tribolazioni della mia giovinezza sono meglio salvate per un'altra volta. Forse scriverò un altro libro.

Ma ho imparato molto a quei tempi. Col tempo, sono migliorato e ho scelto l'ingresso migliore per il labirinto per il problema a portata di mano. Dopotutto, è solo con l'esperienza che si può migliorare con questi magici elisir per l'ottimizzazione delle prestazioni. Ho anche imparato che a volte uno strumento sembra essere quello corretto per il lavoro solo per scoprire, durante lo sforzo di messa a punto, che un altro strumento è più adatto.

Ho anche imparato che è solo lavorare con gli strumenti e imparare in cosa sono bravi e, al contrario, in cosa non sono bravi, che posso scegliere al meglio lo strumento appropriato per il lavoro. In passato, se spesso mi sentivo come se stessi cercando di battere una vite con un martello. Ora vedo una vite e so che lo strumento migliore è un cacciavite.

Nel tempo, ho aumentato il numero di ingressi al mio labirinto di ottimizzazione delle prestazioni. Passo ancora attraverso le porte vere e provate come con una con solo un numero sopra, 10046. In passato, mi è stato detto di porte magiche che portavano ad arcobaleni e unicorni solo per scoprire un altro vecchio troll scontroso sotto un ponte. All'inizio ero scettico sul fatto che Lighty fosse uno strumento così magico, ma mi sbagliavo su quello.

Oh, le storie che potrei raccontarti, ma questa storia parla davvero di quel Performance Tuning Maze. Si tratta sempre di quel labirinto. Scegli la porta migliore possibile, ma solo l'esperienza può dirti qual è la migliore. Ciò ti consentirà di arrivare alla tua soluzione il più rapidamente possibile. Fai una svolta sbagliata e ricomincia da capo. Non aver paura di entrare nel labirinto più volte. Quando pensi di avere la soluzione, passa attraverso il labirinto per verificare. Questo magico labirinto di ottimizzazione delle prestazioni con tutte quelle meravigliose utilità e strumenti Oracle per l'ottimizzazione delle prestazioni è ora diventato uno dei miei posti preferiti dove passare il tempo. Mi piace aggiungere sempre più ingressi, sperando che ogni nuovo strumento mi porti alla fine del labirinto molto più velocemente. A volte lo fanno ea volte no.

Ricordo ancora i giorni in cui uscivo nel vecchio labirinto della "sintonizzazione basata sul rapporto", ma sono passato a pascoli più verdi. Rido ancora quando vedo un nuovo DBA in piedi di fronte a quel vecchio labirinto, coperto di ragnatele e proprio non riescono a cogliere l'allusione. E poi divento irritabile quando urlo loro di dimenticare quel labirinto e vengo qui dove tutti gli altri sono in giro, solo per essere respinto da qualcuno che pensa di conoscere meglio. Bene, se mai li rivedremo, possiamo dire "Te l'avevo detto" e farci una bella risata.

Lavoro spesso con persone che mi vedono usare alcuni di questi strumenti brillanti. Mi guardano entrare nel labirinto e uscire dall'altra parte con la risposta. Quindi la loro ovvia domanda successiva è "posso entrare anche io da quella porta?" rido. "Certo... vai avanti", dico loro. Armati di questo fantastico strumento di ottimizzazione, ma senza alcuna conoscenza su come sintonizzare Oracle, fanno un tentativo abbastanza buono, ma debole. Mi chiamano nel labirinto e mi chiedono di aiutarli a risolvere il problema. Quindi accendiamo lo strumento e lo guardiamo. Riconosco immediatamente la causa principale del problema, ma i luccicanti campanelli e fischietti dello strumento confondono il neofita. A questo punto, sto parlando in Klingon. In pochi secondi dico "Vedi... proprio lì... questo è il tuo problema". e ritorno con lo stesso sguardo interrogativo che ho fornito al mio mentore DBA tanti anni fa. Questi principianti vogliono sempre accedere agli strumenti e pensano di poterli maneggiare come un maestro. Non hanno idea di cosa ci sia nel labirinto né di come navigarlo. Troppe persone pensano che gli strumenti siano la salsa segreta quando è davvero la persona che maneggia lo strumento. Purtroppo, alcune persone con accesso agli strumenti vogliono solo una risposta rapida e semplice. Non vogliono dedicare tempo come tanti di noi.

Tempo, tempo di seguire i maestri. Abbiamo tutti la nostra versione di Mt Rushmore. Scolpito nella pietra. Persone come Millsap, Lewis e Shallahammer per citarne alcuni. Il tuo Mt Rushmore potrebbe avere altri nomi o anche simili. Altri che vedono il nostro Monte Rushmore, tutto scolpito nella pietra, non si rendono conto che queste brave persone erano le nostre guide nel labirinto. Ci hanno mostrato come navigare nel labirinto. Ci hanno mostrato come utilizzare gli strumenti e quali strumenti utilizzare quando. Quelli di noi che hanno imparato dai maestri fanno del nostro meglio per pagare in avanti e insegnare agli altri, anche se potremmo non raggiungere mai vette così elevate, e va bene.

La morale della storia è imparare questi strumenti, imparare cosa fanno e cosa non fanno. Scopri quali problemi aiutano ad affrontare. Sfrutta gli strumenti, ma renditi conto che devi imparare il più possibile in modo da poter camminare nel labirinto con sicurezza. Purtroppo, devo chiudere qui la mia storia. Qualcuno è appena entrato nel mio ufficio con un altro problema di ottimizzazione delle prestazioni. È ora di entrare di nuovo nel labirinto. Ora quale porta prendo?


No