¿Cómo puedo borrar la caché del búfer u otras cachés sin reiniciar mi instancia de RDS para SQL Server?

3 minutos de lectura
0

Quiero borrar la caché de Microsoft SQL Server en mi instancia de Amazon Relational Database Service (Amazon RDS) para Microsoft SQL Server. ¿Cómo puedo hacerlo sin reiniciar mi instancia de base de datos?

Descripción corta

Hay varias maneras de limpiar la caché de SQL Server, desde la más detallada hasta la limpieza completa de la caché. Puedes utilizar las siguientes herramientas para borrar la caché. Todas estas herramientas están disponibles con los Comandos de la consola de la base de datos (DBCC) para SQL Server:

  • DBCC FREEPROCCACHE: borra la caché eliminando todo el plan de la caché. Este comando también puede eliminar planes específicos o eliminar entradas de la caché vinculadas a un grupo de recursos.
  • DBCC FREESYSTEMCACHE: DBCC FREESYSTEMCACHE : además de eliminar elementos del plan de la caché, DBCC FREESYSTEMCACHE puede borrar otras cachés de memoria.
  • DBCC ALTER DATABASE SCOPED CONFIGURATION: este comando está disponible para SQL Server 2016 o superior.

Resolución

Nota: Es una práctica recomendada probar en profundidad los siguientes comandos antes de ejecutarlos en su entorno de producción. Las pruebas ayudan a identificar los posibles problemas que puedan surgir durante la aplicación.

Identificación de las cinco cachés principales y la memoria utilizada

Ejecute el siguiente comando para identificar las cinco principales cachés y la memoria utilizada:

SELECT TOP(5) name AS [Name],
SUM(pages_kb) AS [SizeKb]
FROM sys.dm_os_memory_cache_counters WITH (NOLOCK)
GROUP BY name
ORDER BY SizeKb DESC

Eliminación de un plan de la memoria caché (problema de detección de parámetros)

Ejecute el siguiente comando para identificar el plan defectuoso:

SELECT cp.plan_handle, cp.objtype, cp.usecounts,
DB_NAME(st.dbid)
AS [DatabaseName], st.text
FROM sys.dm_exec_cached_plans AS cp CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
WHERE st.text LIKE N'%[search string]%' OPTION (RECOMPILE);

Ejecute uno de los siguientes comandos para eliminar el plan defectuoso:

DBCC FREEPROCCACHE (plan_handle);

o bien

ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE [plan_handle];

Elimine de la memoria caché los planes en función de las necesidades y los preparados

Si tiene demasiados planes según sus necesidades en la memoria caché, ejecute el siguiente comando para eliminarlos:

DBCC FREESYSTEMCACHE ('SQL Plans')

Borre la caché del plan para la base de datos actual

Si está ejecutando SQL Server 2016 o superior, ejecute el siguiente comando:

ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;

o bien

DBCC FREESYSTEMCACHE('DatabaseName')

Si está utilizando una versión de SQL Server anterior a SQL 2016, ejecute el siguiente comando:

declare @dbid int = (select DB_ID())
DBCC FLUSHPROCINDB (@dbid);

Borrado de todas las cachés

DBCC FREESYSTEMCACHE('ALL')

o bien

DBCC FREEPROCCACHE WITH NO_INFOMSGS;

Nota: El comando DBCC DROPCLEANBUFFERS se utiliza para borrar todas las cachés y el grupo de búfer. Este comando no es compatible con Amazon RDS para SQL Server porque requiere ser miembro del rol de servidor fijo sysadmin.