studio management limpiar how freeproccache flushprocindb dropcleanbuffers cache sql-server caching

management - ¿Cómo puedo borrar el caché de consultas de SQL Server?



limpiar cache sql server 2016 (5)

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 . Ejecuciones posteriores vuelven en < 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 consulta (aún < 1 sec ).


Ocho formas diferentes de borrar el caché del plan

1. Elimine todos los elementos de la memoria caché del plan para toda la instancia

DBCC FREEPROCCACHE;

Use esto para borrar la memoria caché del plan con cuidado. La liberación de la memoria caché del plan provoca, por ejemplo, la recompilación de un procedimiento almacenado en lugar de su reutilización 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

"Se completó la ejecución de DBCC. Si DBCC imprimió mensajes de error, comuníquese con el administrador del sistema".

DBCC FREEPROCCACHE WITH NO_INFOMSGS;

3. Vacíe el caché de plan preparado y ad hoc para toda la instancia

DBCC FREESYSTEMCACHE (''SQL Plans'');

4. Vacíe el caché de plan preparado y preparado para un grupo de recursos

DBCC FREESYSTEMCACHE (''SQL Plans'', ''LimitedIOPool'');

5. Vaciar todo el caché del plan para un grupo de recursos

DBCC FREEPROCCACHE (''LimitedIOPool'');

6. Elimine todos los elementos del caché del plan para una base de datos (no funciona en SQL Azure)

-- Get DBID from one database name first DECLARE @intDBID INT; SET @intDBID = (SELECT [dbid] FROM master.dbo.sysdatabases WHERE name = N''AdventureWorks2014''); DBCC FLUSHPROCINDB (@intDBID);

7. Borrar caché de plan para la base de datos actual

USE AdventureWorks2014; GO -- New in SQL Server 2016 and SQL Azure ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;

8. Eliminar un plan de consulta de la memoria caché

USE AdventureWorks2014; GO -- Run a stored procedure or query EXEC dbo.uspGetEmployeeManagers 9; -- Find the plan handle for that query -- OPTION (RECOMPILE) keeps this query from going into the plan cache SELECT cp.plan_handle, cp.objtype, cp.usecounts, DB_NAME(st.dbid) AS [DatabaseName] FROM sys.dm_exec_cached_plans AS cp CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st WHERE OBJECT_NAME (st.objectid) LIKE N''%uspGetEmployeeManagers%'' OPTION (RECOMPILE); -- Remove the specific query plan from the cache using the plan handle from the above query DBCC FREEPROCCACHE (0x050011007A2CC30E204991F30200000001000000000000000000000000000000000000000000000000000000);

Fuente 1 2 3


Aquí hay una buena explicación. échale un vistazo.

http://www.mssqltips.com/tip.asp?tip=1360

CHECKPOINT; GO DBCC DROPCLEANBUFFERS; GO

Del artículo vinculado:

Si todas las pruebas de rendimiento se realizan en SQL Server, el mejor enfoque puede ser emitir un CHECKPOINT y luego emitir el comando DBCC DROPCLEANBUFFERS. Aunque el proceso CHECKPOINT es un proceso de sistema interno automático en SQL Server y ocurre de manera regular, es importante emitir este comando para escribir todas las páginas sucias de la base de datos actual en el disco y limpiar los búferes. Entonces el comando DBCC DROPCLEANBUFFERS se puede ejecutar para eliminar todos los búferes del grupo de búferes.


Si bien la pregunta es un poco vieja, esto aún podría ayudar. Me encuentro con problemas similares y el uso de la siguiente opción me ha ayudado. No estoy seguro si esta es una solución permanente, pero la está arreglando por ahora.

OPTION (OPTIMIZE FOR UNKNOWN)

Entonces tu consulta será así

select * from Table where Col = ''someval'' OPTION (OPTIMIZE FOR UNKNOWN)


Tenga en cuenta que ni DBCC DROPCLEANBUFFERS; ni DBCC FREEPROCCACHE; es compatible con SQL Azure / SQL Data Warehouse.

Sin embargo, si necesita restablecer el caché del plan en SQL Azure, puede modificar una de las tablas en la consulta (por ejemplo, simplemente agregue y luego elimine una columna), esto tendrá el efecto secundario de eliminar el plan del caché .

Personalmente hago esto como una forma de probar el rendimiento de las consultas sin tener que lidiar con planes en caché.

Más detalles sobre la caché de procedimientos de SQL Azure aquí


EXEC sys.sp_configure N''max server memory (MB)'', N''2147483646'' GO RECONFIGURE WITH OVERRIDE GO

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.