Ottimizzazione delle Query (Parte I)

Pagina 1 di 3

Molto spesso l'efficienza di una applicazione, sia essauna pagina ASP/JSP/PHP o un vero programma, dipendedall'efficienza del sottostante database. Ma un databaseefficiente non serve a nulla se le query che facciamo sono ilmassimo dell'inefficienza. Come si puo' migliorarel'efficienza di una Query?

 

Come funziona il "motore del database" ?

Per poter utilizzare in modo efficiente il motore deldatabase, dobbiamo sapere prima come funziona. Cioe' comele nostre query vengono elaborate e trasformate in unasequenza di record.

Questo articolo presenta i passi necessari per la"trasformazione ed elaborazione delle Query" ,inoltre verranno discussi i vari metodi di ottimizzazione inuso.

Vi sono molti testi sul soggetto, e quasi tutti sono incompleto disaccordo sul metodo esatto di come applicare unaottimizzazione, molti sono in disaccordo anche su cosa e'una "ottimizzazione".

Attenzione: le informazioni su cui questo articolo si basasono largamente basate sul motore di elaborazione di MS SqlServer, altri database potrebbero utilizzare metodi ditrasformazione diversi e quindi impiegare processi diottimizzazione molto diversi. Riferirsi alla documentazionedel produttore del database in caso di problemi o dubbi.

 

Transformazione delle Query

Quando una query SQL e' inviata al "motore" diun database (RDBMS), questo effettua diversi passaggi pertrasformare la query in una sequenza di record che rispondanoa determinate caratteristiche.

I passaggi possono essere diversi per query che NON ritornanorisultati (query di comando), noi ci concentreremo solo sullequery che ritornano dei risultati (query di interrogazione),dato che sono queste che piu' spesso richiedonoottimizzazione.

Parsing

Una volta che la query viene ricevuta dal motore deldatabase, il primo passaggio e' il "parsing" ,cioe' la separazione della query nelle sue componenti.Questo processo ha due funzioni principali:

1. verificare la correttezza della query
2. identificare tutte le parti che compongono la query

Ogni singolo "pezzo" della query e'identificato e memorizzato in una struttura interna al motoredi database, solitamente nella forma di un albero (querytree).

Un albero e' una rappresentazione che puo' esserefacilmente manipolata dal sistema interno, aggiungendo,rimuovendo o spostando le sue componenti.

 

Standardizzazione

Uno dei punti di forza di un database relazionale e'l'abilita' di accettare query da utenti che non hannouna elevata comprensione della sottostante struttura deldatabase, come risultato, una query puo' essere moltocomplessa, il sistema deve essere in grado di"risolvere" svariate combinazioni di istruzioni edidentificare i risultati corretti.

Il processo di "standardizzazione" e' ditrasformare la query in un formato piu' comprensibile almotore stesso. Questo si effettua mediante una serie dimanipolazioni sull'albero di query costruitoprecedentemente. Durante questo processo, vengono rimossetutte le clausole eventualmente ridondanti e l'interoalbero viene riarrangiato. L'albero risultante vienepassato all'ottimizzazione.

Continua >>>



Ti potrebbe interessare anche

commenta la notizia