Cost Based Optimizer, Rule Based Optimizer e Hints parte 2

giovedì 1 febbraio 2007 alle 01:03 | Pubblicato su Performance Tuning | Lascia un commento

Continuo con le scoperte, dopo il fatto che Oracle in presenza di hint (che non siano RULE) utilizza l’ottimizzatore CBO, ho verificato un’altra cosa: EXPLAIN PLAN non fa il bind peeking. Ho perso un sacco di tempo con test inutili con il “set autotrace on” di SQL*Plus che non fà altro che utilizzare EXPLAIN PLAN. Dopo un sacco di test mi sono accorto che per la stessa query SQL*Plus mi dava un piano di esecuzione e in v$sql_plan per la stessa query c’era un’altro piano, questo perchè non veniva fatto il bind peeking. Si trattava di una query molto particolare per cui basandosi sulle statistiche e senza conoscere valori passati nel predicato di selezione Oracle prediligeva un FULL SCAN su una grossa tabella piuttosto che un accesso con indice, quindi nella realtà con un valore buono sceglieva un piano di esecuzione buono, mentre autotrace di SQL*Plus continuava imperterrito a mostrarmi un pessimo piano di esecuzione.

P.S.

a proposito, ho chiesto a Tom se i valori delle bind variables usati durante il bind peeking venivano salvati da qualche parte e lui mi ha risposto che non vengono salvati: pace.

Lascia un commento »

RSS feed for comments on this post. TrackBack URI

Lascia un commento

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.
Entries e commenti feeds.

%d blogger cliccano Mi Piace per questo: