Temos monitorado algumas SQLServer: Memory Manager
métricas e percebemos que após o DBCC CheckDB
trabalho, as métricas
Database Cache Memory (KB)
cai significativamente. Para ser exato, caiu de 140 GB de memória de banco de dados em cache para 60 GB. E depois disso, suba lentamente novamente durante a semana. (O valor " Free Memory KB
" passou de 20 para 100 GB logo após CheckDB
)
DBCC CheckDB
é executado todo domingo, portanto, a Memória em Cache do Banco de Dados precisa aumentar novamente a cada semana
What is the behavior of this ? Why CheckDB pushes database pages out of memory ?
A segunda pergunta é por que " buffer cache hit ratio
" não mudou após a DBCC CheckDB
conclusão?
Foi de 99,99%, em média, e após o DBCC CheckDB
trabalho cai para ~ 98,00%, e retorna para 99% rapidamente, enquanto eu esperava " buffer cache hit ratio
" cair significativamente porque os dados do banco de dados precisam ser lidos novamente do armazenamento para a RAM?
fonte
Respostas:
Isso está correto, você pode ver claramente esse comportamento quando este
DBCC CHECKDB
comando de exemplo é concluído em21h45
Por quê
Esse comportamento ocorre devido à queda
database snapshot
doDBCC
comando criado , removendo todos os seus objetos na memória.Você pode replicar o comportamento criando um instantâneo de um banco de dados, carregando alguns dados na memória e eliminando esse instantâneo
BufferSize antes de descartar o instantâneo
Soltando o instantâneo
BufferSize após descartar o instantâneo
Isso depende da rapidez com que os dados são carregados de volta no cache do buffer.
Se o seu pool de buffers ficar cheio por mais tempo, ele deverá atingir essa proporção, permanecendo mais alto, em média.
Isso corresponde a esta parte da sua pergunta:
fonte