Database Engine Tuning Advisor - Che ceppa fa??

lunedì 05 luglio 2010 - 13.35

Pongo Profilo | Senior Member

Ciao a tutti,

stavo provando ad usare il tool in oggetto con SQL2005 server edition. Avevo alcuni report che ci mettevano una vita di tempo ad eseguire allora ho fatto così:

slq profiler- individuato la query che ci mette una vita ad eseguire, copiata ed eseguita con DETA, creato gli indici e le robe che voleva il programma.

Il report adesso girà in pochissimo tempo, a fronte di un aumento delle dimensioni del db di circa 1,5 giga (10%).

Vi chiedo: è la strada giusta per l'ottimizzazione o no?

Se sì, cosa sono gli indici e dove vengono "scritti" ?

E' cpossibile un rollback on ripristino situazione iniziale o bisogna restrore un backup "valido" prima dell'utilizzo del DETA?

In oracle 9 o successivo, esiste qualcosa del genere?

Ciao e grazie!

lbenaglia Profilo | Guru

>Vi chiedo: è la strada giusta per l'ottimizzazione o no?
Direi che è una buona strada per individuare le ottimizzazioni da apportare al sistema; un'altra è usare la propria testa

>Se sì, cosa sono gli indici e dove vengono "scritti" ?
Non ho capito la domanda, vorresti sapere cos'è un indice?
Brevemente un indice è una struttura dati (tipicamente un b-tree) utilizzata per velocizzare l'accesso ai dati.
SQL Server supporta diverse tipologie di indici di cui trovi ampia documentazione sui Books Online:
http://msdn.microsoft.com/en-us/library/ms189271.aspx

>E' cpossibile un rollback on ripristino situazione iniziale o
>bisogna restrore un backup "valido" prima dell'utilizzo del DETA?
Puoi semplicemente eliminare gli indici creati dal Tuning Advisor, ma la domanda è: per quale motivo vorresti farlo se ora gli accessi sono immediati?

>In oracle 9 o successivo, esiste qualcosa del genere?
Certo, gli indici sono presenti in praticamente tutti gli RDBMS.

>Ciao e grazie!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Pongo Profilo | Senior Member


>Direi che è una buona strada per individuare le ottimizzazioni
>da apportare al sistema; un'altra è usare la propria testa
>

Beh non ci sarei mai arrivato da solo alla creazione di tutta la roba che mi ha tirato fuori quel programma!!

>>Se sì, cosa sono gli indici e dove vengono "scritti" ?
>Non ho capito la domanda, vorresti sapere cos'è un indice?
>Brevemente un indice è una struttura dati (tipicamente un b-tree)
>utilizzata per velocizzare l'accesso ai dati.
>SQL Server supporta diverse tipologie di indici di cui trovi
>ampia documentazione sui Books Online:
>http://msdn.microsoft.com/en-us/library/ms189271.aspx

Adesso leggo, grazie!


>>E' cpossibile un rollback on ripristino situazione iniziale o
>>bisogna restrore un backup "valido" prima dell'utilizzo del DETA?
>Puoi semplicemente eliminare gli indici creati dal Tuning Advisor,
>ma la domanda è: per quale motivo vorresti farlo se ora gli accessi
>sono immediati?


Sono ancora in ambiente test, volevo saperlo nel caso avessi bisogno di recuperare quello spazio occupato in più. Ma posso vederli nella gui da qualche parte?
L'eliminazione di qualche indice potrebbe compromettere l'accesso ai dati o verrebbe solamente meno il vantaggio che direttamente aveva creato quest'ultimo?


>>In oracle 9 o successivo, esiste qualcosa del genere?
>Certo, gli indici sono presenti in praticamente tutti gli RDBMS.
>

Ma riesco a crearli facilmente come con DETA o dovrei capire da solo che indici fare?

E a sto punto un'altra domanda: se dovessi cercare di capire che indici servono, senza avvalrmi di DETA, come dovrei fare?

lbenaglia Profilo | Guru

>Sono ancora in ambiente test, volevo saperlo nel caso avessi
>bisogno di recuperare quello spazio occupato in più. Ma posso
>vederli nella gui da qualche parte?
Certo, in SSMS seleziona la tabella che ti interessa, esplodi il nodo indexes e visualizzerai gli indici definiti su quella tabella.
Per avere una visione di insieme a livello di db puoi selezionarlo e richiamare il report Index Physical Statistics.

>L'eliminazione di qualche indice potrebbe compromettere l'accesso
>ai dati o verrebbe solamente meno il vantaggio che direttamente
>aveva creato quest'ultimo?
Potresti semplicemente perdere le prestazioni in accesso che ora riscontri, ma l'eliminazione di un indice non comporta la perdita di dati.
E' come se tu strappassi l'indice di un libro... le pagine rimangono, ma diventa più problematico ricercare un certo paragrafo

>Ma riesco a crearli facilmente come con DETA o dovrei capire
>da solo che indici fare?
Ogni RDBMS ha dei tools di ottimizzazione, dovresti valutarli caso per caso.

>E a sto punto un'altra domanda: se dovessi cercare di capire
>che indici servono, senza avvalrmi di DETA, come dovrei fare?
Studiare molto
Seriamente, non me la sento di affrontare un argomento così lungo e complesso su un forum. Se hai domande specifiche sei il benvenuto, ma ti suggerisco di dedicare un (bel) po' di tempo per assimilare la teoria.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Pongo Profilo | Senior Member

Lorenzo, sei stato gentile ed esauriente come sempre.

Magari un giorno studierò più approfonditamente il discorso indici, che a quanto pare è molto complesso (dovrei anche riprendere in mano algoritmi e strutture dati), per adesso mi accontento di "sapere", almeno in linea di principio cosa, sto facendo.

Ciao e alla prossima!
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5