Strumenti di analisi delle prestazioni in Oracle

mercoledì 27 febbraio 2008 alle 27:43 | Pubblicato su Performance Tuning | 6 commenti

Oracle database performance tuning tools

Ho trovato molto interessante la discussione innescata da un post di Daniel Fink cui ha replicato Alex Gorbachev, poi Doug Burns e poi Richard Foote che poi è quello da cui ho in realtà iniziato la lettura.

Leggendo tali post (attività che mi ha richiesto notevoli energie e sforzi di traduzione e comprensione)  mi sono venute in mente un sacco di cose che vorrei dire e non so se in questo post riuscirò a dire tutto.

Guesswork

Comincio dall’inizio, la discussione è probabilmente originata da un bel post di Daniel Fink dell’ 11 Dicembre 2007 intitolato  provocatoriamente “How Useful is the Wait Interface” in cui l’autore in sostanza discute l’inadeguatezza e l’insufficenza della strumentazione (storica) di analisi e diagnosi delle prestazioni come strumento appunto di risoluzione dei problemi di prestazioni. L’idea comune, o meglio direi l’utopia comune, di Danile Fink, Mogens Norgaard e Alex Gorbachev è che l’attività di analisi e diagnosi delle prestazioni non deve essere affidata all’intuito e all’esperienza (“guesswork”, ovvero alle congetture o alle supposizioni)  ma deve essere una scienza e in quanto tale esatta.

Un’approccio meno “utopistico”, più realistico e più morbido è quello di Doug Bourns che nel suo post di replica, intitolato “How useful are diagnostic/optimization tools?” – Another View, difende in sostanza gli strumenti di Oracle, compreso il nuovo insieme AWR/ADDM (e ASH?). Mi sembra di capire che in un certo senso difenda la posizione “si, teoricamente con il software si può far tutto, ma nella pratica non è così. Però ci si può avvicinare. Io ritengo giustamente non potendo raggiungere a costi ragionevoli la perfezione e l’esattezza, si usi la statistica, d’altra parte questo avviene anche in medicina, dove si parla di vite umane. Quindi gli strumenti di Oracle riescono, ovviamente se usati da persone coscienti, a coprire in modo soddisfacente una buona percentuale di casi, i rimanti casi sono per i veri esperti.

La realtà secondo me è che Oracle ha fatti buoni progressi, e il fatto che strumenti come AWR, ADDM siano opzioni a pagamento secondo me dimostra che sono strumenti che rendono ancora Oracle superiore alla concorrenza. Il fatto che Oracle abbia rilasciato una versione “Express Edition” completamente gratuita, una “Standard Edition One” a prezzo ridotto, il RAC su Standard Edition sono chiare mosse commerciali fatte per battere la concorrenza. Io non sono un economista ne un esperto di marketing, ma penso che vista l’attuale posizione di Oracle gli si possa dare atto di una buona politica commerciale, piaccia o no. Indubbiamente è fastidioso, come ribadisce Moogen Nogard in un commento a un’altro interessante e provocatorio post di Daniel Fink intotolato “Wait if the Wait Interface was licensed separately?” (il titolo dice già tutto), che vengano installate una serie di componenti a prescindere dalla volontà di chi fa l’installazione che non solo sono una opzione a pagamento, ma richiedono la versione “Enterprise Edition”, portando il sovrapprezzo, se si parte da una Standard Edition a una cosa quasi folle.

awr? addm?

non ho usato molto questi due componenti nuovi in Oracle 10g, però mi sembra di poter dire si tratti di strumenti potenti, utili e interessanti. L’obbiettivo è quello di permettere anche a persone poco qualificate di fare delle analisi e delle diagnosi. In realtà forse tale obbiettivo è ancora troppo ambizioso e tali strumenti in mano a “non esperti” sono poco utili però indubbiamente la direzione è quella giusta.

owa?

Un punto di forza di Oracle è la cosiddetta “Wait Interface” ovvero la strumentazione del codice che attraverso viste dinamiche (le V$) permette di osservare in qualche modo dove il database spende il tempo nell’esecuzione delle sue operazioni. Per fortuna quando fu introdotta non fu messa come opzione a pagamento (mi sembra), quindi non lo è tutt’ora. Il numero di eventi “tracciati” è cresciuto ad ogni versione ed alla 10g mi sembra superino gli 800 (10.2.0.3 su Linux 64_x86 conto 878 record in V$EVENT_NAME)  e il numero di statistiche supera 300 (10.2.0.3 su Linux 64_x86 conto 317 record in V$STATNAME. Quindi molte delle fasi di elaborazione del database sono tracciate, ma non tutte.

Giusto ieri stavo analizzando un report di Statspack giratomi da un collega. Dal report emerge un’elevato uso della CPU, si nota che l’applicazione fa scarso uso di bind variables e quindi vi sono molti hard parse. Però sulla fase di parsing vi sono poche informazioni (nonostante sia definita un’attività molto complessa e onerosa). In sostanza non vi è nessun dato che dica chiaramente dove viene usata tanta CPU. Il punto a cui voglio arrrivare è che i numeri dati in un report di Statspack sono tanti e nonostante ciò non sono sufficienti, da cui il famoso “guesswork” di cui ha parlato Mogens Norgaard e su cui hanno discusso Daniel Fink, Doug Burns, Alex Gorbachev. L’attività svolta dal database Oracle è molto complessa, non è ancora possibile tracciare ogni singolo passo significativo del motore e quindi ci vuole esperienza, intuito e tentativi (la pratica rigettata dagli “scienziati”) perchè non c’è un software in grado di analizzare il database e dire cosa fare in modo deterministico per ottimizzare le prestazioni.

CBO, bind peeking e bachi

Personalmente trovo molto affascinante l’attività di performance tuning, di analisi delle prestazioni di un sistema e di diagnosi. Penso CBO nella versione 10g (con alti e bassi) funzioni molto bene. Oggi, dando un’occhiata ai bug corretti dalla patchset 10.2.0.4 (uscita da qualche giorno per Linux x86) mi è balzato all’occhio questo: “Bug 5364143 – Bind Peeking is not done upon query reload, Execution Plan changes” (nota metalink 5364143.9) . Mi domando come abbiano fatto a trovarlo, la descrizione è molto sintetica, però a me ricorda molto l’unico grosso problema che ho incontrato nella migrazione da RBO (9.2) a CBO (10.2). Ne ho gia parlato in questo blog nella categoria “performance tuning”. Sulla versione 10.1 non ho mai avuto problemi con CBO, direi un buon risultato. Se quel bug è quello che ho incontrato (e per il quale non sono stato in grado di costruire un test case) e se veramente viene corretto, allora la 10.2.0.4 è la versione per me (sperando esca per Linux 64_x86).

Histograms

Un’altra cosa molto interessante che ho scoperto leggendo i commenti seguiti al post di Doug Burns è la spiegazione di Jonathan Lewis su quando vengono calcolati gli istogrammi:

The default method_opt is ‘for all columns size auto’, so Oracle only checks columns that appear in col_usage$ (i.e. ones that have appeared in a WHERE clause) to see if they could use a histogram.

L’unico appunto che muovo a Oracle in questo caso è nel fatto di non aver documentato tale cosa (almeno io non ho visto nulla), lasciando quindi un sacco di dubbi sui comportamenti di queste procedure “automatiche”. Immagino che questo sia dettato anche dall’esigenza di riservarsi oltre che la segretezza degli algoritmi, la possibilità di variare tali algoritmi.

Optimization o Optimisation? Analyze o Analyse?

Bene, un’ultimo paragrafo quasi fuori tema, sulla lingua inglese con cui combatto quotidianamente. Doug Burns all’inizio del suo post dice a un certo punto:

“The subject up for discussion is ‘How useful are diagnostic/optimisation tools’ (Sorry, Dan, I’ll revert to true English spelling for this one …

Il che mi ha fatto venire il dubbio sull’esatta sintassi della parola Optimization. Da una breve indagine mi pare di aver capito che in Inglese Britannico, quindi quello parlato in Inghilterra, la dicituara corretta sia con la “s”, quindi Optimisation e Analyse, mentre la dicitura con la “z” è quella americana. Non bastasse la mia difficoltà a imparare i vocaboli e le regole grammaticali e i modi di dire, ci si mettono anche i dialetti.

About these ads

6 commenti »

RSS feed dei commenti a questo articolo. TrackBack URI

  1. Ciao, io porto la mia esperienza riconosco che i tool per il tuning forniti da Oracle diano un valore aggiunto notevole rispetto ad altri, poi c’è sempre lo statspack e quant’altro.
    io utilizzo per una prima analisi un tool insider della fourthelephant tutto con interfaccia grafica, carino, dove mi permette di individuare subito le aree di criticità di oracle dove ci manifesta il problema.

  2. Ho visto il plugin della fourthelephant per SQL Developer, che è gratuito e devo dire che l’ho trovato interessante. Devo dire che mi ha ricordato subito Spot Light della stessa casa che fa Toad che vidi tempo fa da un cliente. Effettivamente questo tipo di strumenti è molto comodo, perchè in maniera semplice da una panoramica generale del sistema, permettendo quindi di individuare subito problemi non particolarmente subdoli.

  3. Un po’ di precisazioni:

    – AWR è il repository delle informazioni statistiche (in SYSAUX). Corrisponde più o meno alle view DBA_HIST_*.

    – ADDM è il tool che automaticamente analizza il sistema per vedere se ci sono problemi e suggerisce le soluzioni. ADDM funziona ad ogni snapshot AWR (di default 1 ogni ora) oppure a comando.

    – ASH è l’active session history, ovvero un sunto delle informazioni sulla (G)V$SESSION salvate in memoria, fino a che non vengono salvate in AWR.

    Sono “tool” gratuiti e compresi nel database. Puoi considerarli come statspack in versione enormemente evoluta. Usano né più né meno la wait interface, quindi in realtà sono, a mio parere, il modo migliore di analizzare le performance, o almeno il migliore punto di partenza.
    Basta guardare un report ADDM in formato HTML. È fantastico.

    Molto interessante la questione degli istogrammi.

  4. no Rudy,
    le descrizioni sono corrette, ma tali cose non sono gratuite: http://download.oracle.com/docs/cd/B19306_01/license.102/b14199/options.htm#CIHHIGBI
    fanno parte del Diagnostic Pack e sono quindi un’opzione che va pagata a parte e che in quanto tale richiede Entrerprise Edition. E’ proprio questo il punto su cui molti discutono; tali tool, composti da un’insieme di viste, API PL/SQL e interfaccia su DB Control vengono comunque installati sempre e configurati, ma se non sono licenziati non possono essere usati (forse il condizionale sarebbe più adatto). Io in quanto Partner Oracle posso usarli sui miei ambienti interni di Sviluppo e Test ma non posso usarli negli ambienti di produzione del cliente.
    Concordo pienamente sul fatto che siano ottimi strumenti.

  5. Questa cosa mi giunge totalmente nuova. Sono rimasto senza parole: semplicemente… in centinaia di pagine non l’avevo mai letto né nessuno me l’aveva neanche accennato, anche avendo parlato con molte persone!
    Verificherò le licenze che ho al lavoro. Non avere queste funzionalità in produzione, nel mio caso, non è essenziale, ma aiuta, e non averle richiede un po’ di attenzione in più. Mi pare che comunque in ambiente di test non ci siano problemi ad utilizzarle.
    La cosa più interessante, per me, è che questi tool permettono di focalizzarsi velocemente su un problema specifico; personalmente non ho mai usato le soluzioni automatiche proposte (ho risolto sempre via sqlplus), ma i dati raccolti sono utili come punto di partenza.

  6. La politica delle licenze è molto subdola. In effetti questi stessi package c’erano anche in 9iR2 ma comprendevano solo l’interfaccia grafica dell’Enterprise Manager che non faceva altro che analizzare la “Wait Interface” e mostrare dei bei grafici che potevano rendere l’idea. L’evoluzione in 10g è stato il fatto di coprire da licenza tutto sia l’interfaccia grafica (la prima volta che si entra in “db console” viene mostrata una pagina di avvertenza in cui si avvisa che alcuni pacchetti sono sotto licenza e si accettano tutti i termini) che le “API” su cui tali strumenti si basano. Ribadisco il fatto che la cosa più contestata è il fatto che tali struementi vengono sempre e comunque installati a prescindere dalla volontà di chi installa.


Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Blog su WordPress.com. | The Pool Theme.
Entries e commenti feeds.

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 70 follower

%d blogger cliccano Mi Piace per questo: