ottimizzare per l'opzione di configurazione del server dei carichi di lavoro a hoc
L'opzione optimize for ad hoc workloads consente di migliorare l'efficienza della cache dei piani per carichi di lavoro che contengono molti batch ad hoc a uso singolo. Quando questa opzione viene impostata su 1, alla prima compilazione di un batch il Motore di database archivia un piccolo stub del piano compilato nella cache dei piani, anziché il piano compilato completo. In questo modo si riducono le richieste di memoria evitando che la cache dei piani si riempia con piani compilati che non vengono riutilizzati.
Poiché grazie allo stub del piano compilato il Motore di database riconosce che il batch ad hoc è stato compilato in precedenza e ha archiviato solo uno stub del piano compilato, quando il batch viene nuovamente richiamato (compilato o eseguito), il Motore di database compila il batch, rimuove lo stub del piano compilato dalla cache dei piani e aggiunge il piano compilato completo alla cache dei piani.
L'impostazione dell'opzione optimize for ad hoc workloads su 1 influisce solo sui nuovi piani, mentre non si applica ai piani già presenti nella cache dei piani.
Lo stub del piano compilato è uno degli oggetti cacheobjtypes visualizzati nella vista del catalogo sys.dm_exec_cached_plans. Dispone di handle SQL e del piano univoci. Lo stub del piano compilato non ha un piano di esecuzione associato e l'esecuzione di query per l'handle del piano non restituisce uno showplan XML.
Con il flag di traccia 8032 è possibile ripristinare i parametri dei limiti di cache all'impostazione RTM di SQL Server 2005 che consente, in generale, di aumentare le dimensioni delle cache. Utilizzare questa impostazione quando le voci della cache riutilizzate di frequente non rientrano nella cache e qualora non sia possibile risolvere il problema con la cache dei piani mediante ottimizzare per l'opzione di configurazione del server dei carichi di lavoro a hoc.
Attenzione |
---|
Il flag di traccia 8032 può provocare prestazioni ridotte se cache di grandi dimensioni rendono disponibile meno memoria per altri consumer di memoria, ad esempio il pool di buffer. |
Vedere anche
Riferimento
sys.dm_exec_cached_plans (Transact-SQL)