Estoy intentando mejorar el rendimiento de un procedimiento almacenado. Cuando ejecuto el SP, termina casi instantáneamente, como si algo estuviera en caché. Me dijeron que usara las siguientes dos líneas de SQL antes de ejecutar el SP en SSMS:
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Cuando ejecuto el SP con las dos líneas de código arriba, el SP termina en unos 8 segundos. Sin embargo, ¿esto realmente me da el tiempo de ejecución real (como si ejecuto esto desde una aplicación)? ¿Cómo puedo saber?
Respuestas:
Esos comandos hacen dos cosas:
Básicamente, está obteniendo un tiempo equivalente al "peor de los casos": acaba de reiniciar el servidor y no hay nada en la memoria. Las ejecuciones posteriores no necesitan pagar el costo para extraer los datos del disco ya que esas páginas ya están cargadas en la memoria.
Esto es similar a una situación del mundo real: es probable que su primer usuario que ejecute una consulta en particular tenga que esperar más tiempo que en las ejecuciones posteriores, suponiendo que esté verificando los mismos datos.
Un buen método que me gusta usar es correr varias veces y tomar un promedio. Esto es especialmente útil en un entorno compartido ya que no tiene control total sobre los recursos compartidos como tempdb.
También puede usar estos comandos para obtener más información sobre lo que realmente sucede detrás de escena:
Estos le proporcionarán información detallada sobre las lecturas de página del disco (por objeto), las lecturas lógicas de página, el tiempo dedicado a compilar un plan y el tiempo dedicado a ejecutar una consulta.
fuente
GO 5
mismo SSMS. Es una descarga gratuita, no estoy tratando de venderte nada. sqlsentry.net/plan-explorer/sql-server-query-view.asp