Hint oracle

lunedì 07 aprile 2014 - 17.16

Gio' Profilo | Newbie

buonasera, volevo chiedere un informazione, mi hanno dato da analizzare una procedura pl/sql, nella quale sono indicate delle istruzioni sql che utilizzano gli hint, siccome non li ho mai utilizzati, so che sono delle linee guida agli accessi oracle, volevo chiedere, nello specifico cosa significano tecnicamente, quelli che stanno nella mia procedura sono i seguenti:

select/*+ parallel(a 4)*/ a.campo1,
a.campo2,
a.campo3
from T1 a

select/*+leading(b) full(b) parallel(b 4)
use_hash(b a) */
a.campo1,
a.campo2,
b.campo1
from T1 a, T2 b

ho provato a vedere su internet, ma non essendo molto pratica non ho capito tanto
e' possibile sapere nello specifico, in queste due select, cosa stanno a significare gli hint inseriti

grazie

saluti

Gio'

alx_81 Profilo | Guru

>buonasera,
ciao

vediamo di elencarli, cerco di darti una mano anche se di oracle conosco poche cose. Mi baso sull'esperienza in SQL Server.
PARALLEL (grado di parallelismo)
http://docs.oracle.com/cd/B10500_01/server.920/a96533/hintsref.htm#5833
consente di specificare il numero di server utilizzati per parallelizzare un'operazione.
In uno dei tuoi casi, ad esempio, per la tabella puntata dall'alias "a" puoi far accedere 4 server concorrenti.

LEADING (join hint)
http://docs.oracle.com/cd/B10500_01/server.920/a96533/hintsref.htm#5730
Specifica qual è la tabella che deve essere la prima nell'interpretare le join nel comando (a runtime).
Nel tuo esempio, b (ovvero T2) è la tabella ad essere considerata per prima.

USE_HASH (join hint)
http://docs.oracle.com/cd/B10500_01/server.920/a96533/hintsref.htm#5683
Forza la join con algoritmo di hash join http://en.wikipedia.org/wiki/Hash_join
Questo è da approfondire, perchè chiama in causa funzioni di hashing, tabelle hash, ed infine algoritmo per effettuare la join.

FULL (accesso a tabella)
http://docs.oracle.com/cd/B10500_01/server.920/a96533/hintsref.htm#5078
Forza il fullscan (scorrimento dall'inizio alla fine della tabella) sulla tabella indicata, per te b, ovvero T2.


>ho provato a vedere su internet, ma non essendo molto pratica non ho capito tanto
per capire questi hint serve esperienza di tuning, dal giorno alla notte non è poco..

>grazie
di nulla!
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

Gio' Profilo | Newbie

grazie mille, sei stato gentilissimo, mi e' chiaro quasi tutto, l'unica cosa che non ho capito molto e' il parallel, cioe' quando dici parallel (a 4) consente di specificare il numero di server utilizzati per parallelizzare un'operazione, cosa intendi con la parola server, le aree di memoria?
mi spiego meglio, il server su cui risiedono le mie tabelle e' uno solo, quindi il 4 cosa sta ad indicare? le possibili aree da utilizzare nell'accesso?
grazie per la disponibilita'
saluti
Gio'

alx_81 Profilo | Guru

>grazie mille, sei stato gentilissimo, mi e' chiaro quasi tutto,
>l'unica cosa che non ho capito molto e' il parallel, cioe' quando
>dici parallel (a 4) consente di specificare il numero di server
>utilizzati per parallelizzare un'operazione, cosa intendi con
>la parola server, le aree di memoria?
Come ti dicevo, per arrivare agli internals di oracle, dovrei lavorarci seriamente.
Ma la documentazione ti viene in aiuto. Dai una letta qui, secondo me trovi le risposte:
http://docs.oracle.com/cd/E11882_01/server.112/e25523/parallel002.htm
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

Gio' Profilo | Newbie

ok, ora me la studio un po
grazie mille
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5