BCC DROPCLEANBUFFERS viene utilizzato per svuotare la cache dei dati in memoria e, generalmente, quando effettuiamo ottimizzazione delle prestazioni, eseguiamo DBCC DROP CLEANBUFFERS prima che l'istruzione venga eseguita, per facilitare il tempo di esecuzione e il consumo fisico di IO di un'istruzione.
Tuttavia, questo trucco non è sempre molto efficace.
Alcune persone potrebbero aver incontrato questo fenomeno,Anche se vengono eseguiti i DBCC DROPCLEANBUFFER, non c'è comunque alcuna lettura fisica nelle informazioni di output di SSMS, e questa istruzione è comunque i dati letti dalla memoria (lettura logica)。
Rimarrai sorpreso, "Il buffer nella memoria non è svuotato, perché non c'è una lettura fisica?" Questo fenomeno è invalido per DBCC DROPCLEANBUFFER? ”
No. I DROP CLEANBUFFER possono effettivamente essere usati per liberare la cache dati in memoria, ma solo le pagine della cache in stato pulito; d'altra parte, se queste pagine sono pagine sporche, cioè pagine dati in memoria modificate e non sincronizzate con il disco, allora non possono essere cancellate dalla cache, questo per motivi di prestazioni.
Quindi, quando incontri DROP CLEANBUFFER "invalido", prova a sincronizzare manualmente le pagine dati in memoria e disco, ottenendo:
Puoi anche verificare il numero e la dimensione delle pagine pulite e sporche nella memoria attuale dicendo quanto segue:
Comando di pulizia della cache:
Originale:Il login del link ipertestuale è visibile. |