¿Cómo puedo borrar la caché del búfer u otras cachés sin reiniciar mi instancia de RDS para SQL Server?
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.
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años