Comportamento della cache del piano completo


8

In SQL Server 2005, cosa succede quando la cache del piano si riempie? Ho fatto alcune ricerche e, a partire da frammenti raccolti, sembra che i piani memorizzati nella cache abbiano un '"età" che consiste nel peso o nel costo di compilazione, moltiplicato per il numero di volte in cui è stato eseguito dalla cache. Nel tempo questa età viene ridotta, fino a raggiungere 0, quando viene considerata "invecchiata" ed è candidata per arrossire quando necessario. Quando la cache del piano si riempie, i piani scaduti vengono scaricati dalla cache.

C'è qualcos'altro che sta accadendo dietro le quinte per complicare questo scenario?

Grazie,

opaco

Risposte:


9

Le migliori informazioni sull'argomento trovato su MSDN sono qui: Piano di esecuzione Memorizzazione nella cache e riutilizzo . Citazione dall'articolo MSDN:

"Rimozione dei piani di esecuzione dalla cache delle procedure

I piani di esecuzione rimangono nella cache delle procedure fintanto che è disponibile memoria sufficiente per memorizzarli. Quando esiste una pressione della memoria, Motore di database utilizza un approccio basato sui costi per determinare quali piani di esecuzione rimuovere dalla cache delle procedure. Per prendere una decisione basata sui costi, Motore di database aumenta e diminuisce una variabile di costo corrente per ciascun piano di esecuzione in base ai seguenti fattori.

In caso di pressione della memoria, Motore di database risponde rimuovendo i piani di esecuzione dalla cache delle procedure. Per determinare quali piani rimuovere, il Motore di database esamina ripetutamente lo stato di ciascun piano di esecuzione e rimuove i piani quando il loro costo attuale è zero. Un piano di esecuzione con zero costi correnti non viene rimosso automaticamente quando esiste una pressione della memoria; viene rimosso solo quando Motore di database esamina il piano e il costo corrente è zero. Quando si esamina un piano di esecuzione, Motore di database spinge il costo corrente verso lo zero diminuendo il costo corrente se una query non sta attualmente utilizzando il piano. "

È meglio leggere l'articolo completo, è ben documentato. Vedi che ha anche alcuni link.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.