Las otras respuestas son correctas sobre las razones para no ejecutar DBCC FREEPROCCACHE
. Sin embargo, también hay un par de razones para hacerlo:
- Consistencia
Si desea comparar dos consultas o procedimientos diferentes que intentan hacer lo mismo de diferentes maneras, es probable que lleguen a las mismas páginas. Si ingenuamente ejecuta la consulta # 1 y luego la consulta # 2, la segunda puede ser mucho más rápida simplemente porque esas páginas fueron almacenadas en caché por la primera consulta. Si borra el caché antes de cada ejecución, comienzan de manera uniforme.
Si desea probar el rendimiento de la caché en caliente, asegúrese de ejecutar las consultas varias veces, alternando, y descarte las primeras ejecuciones. Promedio de los resultados.
- El peor de los casos
Supongamos que tiene una consulta que demora un segundo en un caché activo pero un minuto en un caché frío. Una optimización que hace que la consulta en memoria sea un 20% más lenta pero la consulta vinculada a IO un 20% más rápida podría ser una gran victoria: durante las operaciones normales, nadie notará los 200 ms adicionales en circunstancias normales, pero si algo obliga a una consulta a ejecutar contra disco, tomar 48 segundos en lugar de 60 podría ahorrar una venta.
Esto es menos preocupante en los sistemas modernos con decenas de gigabytes de memoria y almacenamiento relativamente rápido de SAN y SSD, pero todavía es importante. Si algún analista ejecuta una consulta de escaneo de tabla masiva contra su base de datos OLTP que borra la mitad de su caché de búfer, las consultas de almacenamiento eficiente lo pondrán nuevamente en marcha más rápido.
DBCC FLUSHPROCINDB
: Se proporcionó un número incorrecto de parámetros a la instrucción DBCC.