2015-07-29 10 views

risposta

2

L'advisor di sintonizzazione del database può essere essere utile per l'ottimizzazione di query specifiche o una moltitudine di query.

Ma

Basta essere consapevoli che gettare un mazzo di indici su una tabella può aiutare le prestazioni di una query, mentre danneggiare le prestazioni di un altro. Inoltre, più indici ha una tabella, più lunghe sono le scritture necessarie a dover scrivere su più indici.

Se si dispone di query particolarmente lunghe a lungo termine, è possibile fare riferimento ai suggerimenti del consulente di tuning (ma cercare di capire perché li suggerisce prima di lanciarli su un tavolo con poca volontà).

Un'altra funzione (potenzialmente) interessante è la fornitura di un file di traccia per l'analisi da analizzare. Se sei in grado di ottenere una traccia di "produzione simile", ciò potrebbe potenzialmente darti degli indici utili da utilizzare su più tavoli. Con "like production" intendo se riesci a ottenere una traccia che rappresenta un comportamento simile alla produzione per un lungo periodo di tempo. Un'opzione è tracciare la produzione (vedi perché questa può essere una cattiva idea https://dba.stackexchange.com/questions/818/using-sql-profiler-on-a-database-thats-in-production) ... ma fai attenzione che questo può essere abbastanza pesante. Ecco un tutorial su come eseguire una traccia di impronta più piccola senza utilizzare l'interfaccia utente: http://tranpeter.blogspot.com/2013/10/sql-server-proffer-offline.html

+0

Se fornisco il DTA con un file di traccia valido, considererà altre query quando suggerirà un indice per una determinata query? –

+0

E ti meriti +1 –

+1

da quello che ho capito (che potrebbe essere errato) il DTA tiene conto di tutte le query fornite dal file di traccia. Tuttavia, questo può essere eccessivo sui suoi suggerimenti, ma i suoi suggerimenti si baseranno su un "flusso di lavoro reale" all'interno della tua app, quindi * potrebbe * essere più utile in alcuni aspetti. Ancora una volta, valuta gli indici che stai effettivamente aggiungendo per vedere se hanno senso. – Kritner

4

Assolutamente no. L'Ottimizzazione guidata motore di database ha un ambito molto limitato, raccomandando solo indici per un particolare carico di lavoro. Ma il carico di lavoro effettivo può variare.

Ad esempio, DTA consiglia index1 per una query specifica. Ma diciamo che la tabella è l'obiettivo della modifica dei dati pesanti, quindi i vantaggi di index1 sono estremamente ridotti rispetto all'overhead e all'impatto sulle prestazioni del mantenimento di index1 dalle modifiche dei dati a un carico di lavoro più significativo. (questo è solo un esempio, ma dovrebbe servire a illustrare come un approccio di fucile da caccia a indicizzazione può ottenere nei guai)

Prendere le raccomandazioni del DTA come proprio questo ... raccomandazioni. Non vi è alcun sostituto per la dovuta diligenza di testare l'indicizzazione raccomandata in un effettivo carico di lavoro equivalente alla produzione.

+0

Grazie per la tua risposta e +1 –

+1

Voglio aggiungere, valutare il piano di esecuzione di ogni query che utilizzerai ripetutamente con i dati e ottenere esperienza in la creazione dell'indice utilizzando i risultati. È possibile esplorare altri strumenti per il tunning. – Juan

+0

Non pensi di esagerare quando dici assolutamente no. –

Problemi correlati