Sei sulla pagina 1di 17

SQL PERFORMANCE & TUNING

8. Gli statement SQL

Atos, Atos and fish symbol, Atos Origin and fish symbol, Atos Consulting, and the fish symbol itself are registered trademarks of Atos Origin SA. 30 December 2021
© 2006 Atos Origin. Private for the client. This report or any part of it, may not be copied, circulated, quoted without prior written approval from Atos Origin or the
client.
Obiettivi

In questo paragrafo verranno affrontati i seguenti argomenti:


 Le fasi di uno statement SQL
 Come scrivere uno statement SQL

2 Custom presentation- or document control name


Le fasi di uno statement SQL

Passi richiesti per l’esecuzione di uno statement SQL:


 PARSE
 BIND
 EXECUTE
 FETCH (se necessario)

3 Custom presentation- or document control name


La fase di PARSE

 E’ necessaria per compilare lo statement SQL e generare il


piano di esecuzione.
 Può essere suddivisa in controllo sintattico e semantico.
 Non viene rieseguita se viene trovato nella library cache
uno statement con lo stesso valore hash.
 Per query complesse, il tempo di parse può essere rilevante.

4 Custom presentation- or document control name


La fase di BIND

 E’ necessaria per associare (“legare”) le variabili di


input/output dello statement con le aree di memoria di oracle.
 Viene rieseguita ad ogni nuova esecuzione dello statement.

5 Custom presentation- or document control name


La fase di EXECUTE

 E’ necessaria per l’esecuzione dello statement.


 Nel caso di query, si occupa di “preparare” la successiva
fase di fetch.
 Utilizza il piano di esecuzione prodotto dalla fase di parse.
 Utilizza le variabili di input/output “legate” nella fase di
bind.

6 Custom presentation- or document control name


La fase di FETCH

 Eseguita solo per le QUERY.


 E’ necessaria per recuperare i dati da restituire.
 Può essere eseguita più volte.
 I dati sono normalmente restituiti n righe alla volta.

7 Custom presentation- or document control name


Come scrivere uno statement SQL

 Rispettare lo standard.
 Ottimizzare finchè non sono stati raggiunti gli obiettivi.
 Provare i diversi piani di esecuzione.
 Verificare i tempi di esecuzione.
 Mai scrivere query troppo complesse (> 1024).
 Utilizzare, quando possibile, le bind-variable.

8 Custom presentation- or document control name


Rispettare lo standard

 Riutilizzo degli statement SQL


 Chiarezza e leggibilità

9 Custom presentation- or document control name


L’ottimizzazione degli statement

 Azione preventiva.
 Ottimizzazione come obiettivo.
 Ottimizzare fino al raggiuggimento degli obiettivi (e non
oltre).

10 Custom presentation- or document control name


I diversi piani di esecuzione

 Ottenere sempre il piano di esecuzione di una query.


 Verificare i diversi piani di esecuzione.
 “Pilotare” l’ottimizzatore nella scelta del piano di
esecuzione ottimale.
 Se si utilizza il CBO, ricordarsi che: “il piano di esecuzione
dipende dalla distribuzione dei dati e dalle statistiche”.

11 Custom presentation- or document control name


Il tempo di esecuzione

 Verificare il tempo di esecuzione dello statement su un


database contenete dei dati (quantità e distribuzione) simili al
database di produzione.
 Per ottenere (in Sql*Plus) il tempo di esecuzione di uno
statement SQL (o blocco PL/SQL) è sufficiente utilizzare il
comando: SET TIMING ON

12 Custom presentation- or document control name


Query complesse

 Mai scrivere query troppo complesse (> 1024).


 Il tempo di parse per una query complessa è un fattore
rilevante.
 Possono causare fenomeni di frammentazione della shared-
pool.
 Difficili da ottimizzare.
 Poco leggibili.
 Come alternativa, utilizzare dei blocchi pl/sql.

13 Custom presentation- or document control name


Le bind variable (1)

 Una bind-variable è una variabile dell’applicativo che


viene passata per indirizzo allo statement SQL.
 E’ possibile cambiare il contenuto di una bind-variable e
rieseguire lo stesso statement.
 Oracle può ritornare un valore all’interno di una bind-
variable all’applicativo.

14 Custom presentation- or document control name


Le bind variable (2)

 Riutilizzo degli statement SQL


 Attenzione a “pilotare” in modo opportuno l’ottimizzatore
(il quale non conoscendo il valore della bind-variable può non
scegliere il piano di esecuzione ottimale).
 Utilizzate, normalmente, in ambienti OLTP, non in DSS.

15 Custom presentation- or document control name


Esempio - le bind variable

> var a number

> begin
> select 1 into :a from dual;
> end;
>/

> print a

16 Custom presentation- or document control name


Riepilogo

In questo paragrafo abbiamo visto:


 Le fasi di uno statement SQL
 Come scrivere uno statement SQL

17 Custom presentation- or document control name

Potrebbero piacerti anche