Domanda

Abbiamo un off l'applicazione mensola che utilizza un database Microsoft SQL. All'interno di questa applicazione prendiamo e scegliamo vari criteri di selezione per ogni rapporto. Questa applicazione quindi esegue questi rapporti.

Credo che abbiamo un problema di piano di query. La prima relazione corriamo ogni giorno, corre molto veloce 7 minuti. Qualsiasi rapporto si corre dopo la prima relazione prende più di un'ora.

Ogni sera abbiamo eseguire un'attività pianificata che si ferma e comincia a SQL Server Agent e SQL Server. Ci sono circa 25 altri database all'interno di questa istanza di SQL Server. Nessun altro database hanno problemi di prestazioni, solo l'uno al largo della shelf ho menzionato in precedenza.

C'è un modo per cancellare tutti i piani di query che SQL Server è attualmente nella memoria?

Come posso fare questo senza impattare il 30 o giù di lì gli utenti che si basano su altri database sullo stesso server?

È stato utile?

Soluzione

Le mie scuse per la mia risposta precedente.

1) Aggiungere l'opzione WITH RECOMPILE per l'istruzione CREATE PROCEDURE se si sa che la query può variare ogni volta che viene eseguito dalla stored procedure. Le impedisce opzione WITH RECOMPILE riutilizzando il piano di esecuzione stored procedure, quindi SQL Server non memorizza un piano per questa procedura e la procedura viene ricompilata in fase di esecuzione. Utilizzando l'opzione WITH RECOMPILE può migliorare le prestazioni se la query può variare ogni volta che viene eseguito dalla stored procedure perché in questo caso non verrà utilizzato il piano di esecuzione sbagliata.

2) Devi creare una guida di piano che utilizza un'USO interrogazione pIANO suggerimento per ogni tipo di query (ogni procedura stored tipo richiesta) al piano di esecuzione forza.

Ecco href="http://www.simple-talk.com/sql/performance/execution-plan-basics/"> su piano di esecuzione che possono aiutare.

Altri suggerimenti

DBCC FREEPROCCACHE

Using this command, you can clear the entire procedure cache down to a single command. Definitely read the documentation before using this command. Read the Remarks section a few times.

Clearing the procedure cache will cause stored procedure caches to be recompiled upon next use. This could impact performance. Use carefully!

Matt

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top