BCC DROPCLEANBUFFERS se utiliza para limpiar la caché de datos en memoria y, generalmente, cuando hacemos ajustes de rendimiento, ejecutamos DBCC DROP CLEANBUFFERS antes de ejecutar la instrucción para facilitar el tiempo de ejecución y el consumo físico de IO de una sentencia.
Sin embargo, este truco no siempre es muy efectivo.
Algunas personas pueden haberse encontrado con este fenómeno,Incluso si se ejecutan los DROPCLEANBUFFERS de DBCC, sigue sin haber lectura física en la información de salida de SSMS, y esta sentencia sigue siendo los datos leídos de memoria (lectura lógica)。
Te sorprenderás: "¿No se vacía el buffer en la memoria, por qué no hay lectura física?" ¿Es este fenómeno inválido el DBCC DROPCLEANBUFFERS? ”
No. Los DROP CLEANBUFFERS pueden usarse efectivamente para borrar la caché de datos en memoria, pero solo las páginas de caché en estado limpio; por otro lado, si estas páginas son páginas sucias, es decir, páginas de datos en memoria que han sido modificadas y no se han sincronizado con el disco, entonces no pueden borrarse de la caché, esto es por razones de rendimiento.
Así que cuando encuentres DROP CLEANBUFFERS "inválido", intenta sincronizar manualmente las páginas de datos en memoria y disco, realizando:
También puedes comprobar el número y tamaño de páginas limpias y sucias en la memoria actual diciendo lo siguiente:
Comando de limpieza de caché:
Texto original en:El inicio de sesión del hipervínculo es visible. |