Hemos estado monitoreando algunas SQLServer: Memory Manager
métricas y notamos que después del DBCC CheckDB
trabajo, métricas
Database Cache Memory (KB)
cae significativamente. Para ser exactos, se redujo de 140 GB de memoria DB en caché a 60 GB. Y después de eso, aumente lentamente nuevamente durante la semana. (Cantidad de " Free Memory KB
", pasó de 20 a 100 GB justo después CheckDB
)
DBCC CheckDB
se ejecuta todos los domingos, por lo que la memoria de la memoria caché de la base de datos debe volver a aumentar cada semana
What is the behavior of this ? Why CheckDB pushes database pages out of memory ?
La segunda pregunta es ¿por qué " buffer cache hit ratio
" no cambió después de DBCC CheckDB
completarse?
Fue de 99.99% en promedio y después del DBCC CheckDB
trabajo se redujo a ~ 98.00%, y regresó a 99% bastante rápido mientras esperaba que " buffer cache hit ratio
" cayera significativamente porque los datos de la base de datos deben leerse desde el almacenamiento a la RAM nuevamente.
fuente
Respuestas:
Esto es correcto, puede ver claramente este comportamiento cuando este
DBCC CHECKDB
comando de ejemplo se completa en21h45
Por qué
Este comportamiento se debe al hecho
database snapshot
de que elDBCC
comando se descarta y elimina todos sus objetos en la memoria.Puede replicar el comportamiento creando una instantánea de una base de datos, cargando algunos datos en la memoria y luego soltando esa instantánea
BufferSize antes de soltar la instantánea
Soltando la instantánea
BufferSize después de soltar la instantánea
Esto depende de qué tan rápido se carguen los datos en su caché de búfer.
Si su grupo de búferes se llena durante un tiempo más largo, debería equivaler a que esta proporción se mantenga más alta en promedio.
Esto corresponde con esta parte de su pregunta:
fuente