Programmazione.it v6.2
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Chat Forum
71 suggerimenti per Oracle 11g
Scritto da Ciro Fiorillo il 21-10-2008 ore 10:20
Una interessante caratteristica del database Oracle è la possibilità di inserire, all'interno dei propri statement SQL, dei suggerimenti per il query optimizer, noti come hint. La documentazione ufficiale invita ad usare questi suggerimenti con parsimonia, ma vi possono essere casi in cui si possono ottenere migliori piani di esecuzione proprio grazie ai pratici hint, ad esempio in presenza di statistiche non aggiornabili, sulle quali viene basato l'execution plan.

Per inserire un suggerimento all'interno di una select basta introdurre, subito dopo tale parola chiave, un commento racchiuso tra i classici simboli /*+ e */, contenente l'hint stesso, come in questo esempio:
  1. <span style="font-size:1.0em">
  2. SELECT /*+FIRST_ROWS*/ ...
  3. </span>
In questo articolo di Steve Callan viene proposto uno schema riassuntivo di tutti i suggerimenti disponibili nel database Oracle 11g, ben 71 escludendo i deprecated, organizzati per categorie.

Alcuni di questi hint possono effettivamente fornire all'ottimizzatore delle informazioni in più rispetto all'obiettivo che vogliamo raggiungere con una nostra query: ad esempio ALL_ROWS e FIRST_ROWS indicheranno rispettivamente la necessità di operare su tutte le righe, oppure di disporre delle prime nel minor tempo possibile, consentendo al query optimizer di scegliere il piano di esecuzione più opportuno in base anche a tale informazione.

Come scrive Thomas Kyte nella prima risposta di questo post, quando il numero di hint nelle nostre applicazioni prolifera, occorre chiedersi cosa c'è che non va, in quanto significa che stiamo “riscrivendo un Rule Based Optimizer”, come quello presente da Oracle 6 in poi e deprecated nella versione 10g del database, impedendo al query optimizer di utilizzare i nuovi strumenti automatici messi a disposizione per il miglioramento delle performance: “a questo punto sarebbe meglio non avere alcun ottimizzatore” - conclude Kyte.

Nell'articolo di Steve Callan viene anche mostrato come, in un caso reale, il cattivo utilizzo di hint e di tabelle over-indexed abbiano portato ad un evidente problema di performance del database.
Precedente: Dal team di Opera un motore di ricerca per sviluppatori
Successiva: USA, i candidati alla Presidenza e l'Information Technology
Copyright Programmazione.it™ 1999-2009. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 1.337 secondi. Sito ottimizzato per Mozilla Firefox. Powered by Kyron.