Tengo una consulta simple ejecutándose contra SQL Server 2005
SELECT *
FROM Table
WHERE Col = 'someval'
La primera vez que ejecuto la consulta puede tomar > 15 secs
. Las ejecuciones posteriores vuelven a entrar < 1 sec
.
¿Cómo puedo hacer que SQL Server 2005 no use ningún resultado en caché? He intentado correr
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Pero esto parece no tener ningún efecto en la velocidad de la consulta (aún < 1 sec
).
sql-server
caching
PaulB
fuente
fuente
Respuestas:
Aquí hay una buena explicación. échale un vistazo.
http://www.mssqltips.com/tip.asp?tip=1360
Del artículo vinculado:
fuente
Ocho formas diferentes de borrar el caché del plan
1. Elimine todos los elementos de la caché del plan para toda la instancia
Use esto para borrar el caché del plan con cuidado. La liberación de la memoria caché del plan hace que, por ejemplo, se recompile un procedimiento almacenado en lugar de reutilizarse desde la memoria caché. Esto puede causar una disminución repentina y temporal en el rendimiento de la consulta.
2. Vacíe el caché del plan para toda la instancia y suprima el mensaje de finalización regular
"Ejecución de DBCC completada. Si DBCC imprimió mensajes de error, comuníquese con el administrador del sistema".
3. Vacíe el caché del plan ad hoc y preparado para toda la instancia
4. Vacíe el caché del plan ad hoc y preparado para un grupo de recursos
5. Vacíe todo el caché del plan para un grupo de recursos
6. Elimine todos los elementos de la caché del plan para una base de datos (no funciona en SQL Azure)
7. Borrar el caché del plan para la base de datos actual
8. Eliminar un plan de consulta del caché
Fuente 1 2 3
fuente
Si bien la pregunta es un poco antigua, esto podría ayudar. Me encuentro con problemas similares y usar la opción a continuación me ha ayudado. No estoy seguro de si esta es una solución permanente, pero la está arreglando por ahora.
Entonces su consulta será así
fuente
select * from Table where Col = 'someval' OPTION (OPTIMIZE FOR UNKNOWN)
El valor que especifique para la memoria del servidor no es importante, siempre que difiera del actual.
Por cierto, lo que causa la aceleración no es el caché de consultas, sino el caché de datos.
fuente
Tenga en cuenta que ni
DBCC DROPCLEANBUFFERS;
niDBCC FREEPROCCACHE;
es compatible con SQL Azure / SQL Data Warehouse.Sin embargo, si necesita restablecer la caché del plan en SQL Azure, puede modificar una de las tablas de la consulta (por ejemplo, simplemente agregue y elimine una columna), esto tendrá el efecto secundario de eliminar el plan de la caché .
Personalmente, hago esto como una forma de probar el rendimiento de las consultas sin tener que lidiar con los planes en caché.
Más detalles sobre la caché de procedimientos de SQL Azure aquí
fuente