Monitoramos algumas métricas do SQLServer: Memory Manager e percebemos que, após o trabalho do DBCC CheckDB, a métrica
A memória cache do banco de dados (KB) diminui significativamente. Para ser exato, caiu de 140 GB de memória de banco de dados em cache para 60 GB
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
do DBCC
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
CREATE DATABASE MY_DATABASE
GO
USE MY_DATABASE
GO
CREATE TABLE dbo.bla(id int identity(1,1) PRIMARY KEY NOT NULL,
val int,
val2 char(100));
INSERT INTO dbo.bla(val,val2)
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)),'bla'
FROM master..spt_values spt
CROSS APPLY master..spt_values spt2;
GO
CREATE DATABASE MY_DATABASE_SNAPSHOT
ON
(
NAME ='MY_DATABASE',
FILENAME ='D:\DATA\MY_DATABASE.ss'
)
AS SNAPSHOT OF MY_DATABASE;
GO
USE MY_DATABASE_SNAPSHOT
GO
SELECT * FROM dbo.bla;
SELECT
COUNT(file_id) * 8/1024.0 AS BufferSizeInMB
FROM sys.dm_os_buffer_descriptors;
BufferSize antes de descartar o instantâneo
BufferSizeInMB
1061.70312 --before
Soltando o instantâneo
USE master
GO
DROP DATABASE MY_DATABASE_SNAPSHOT ;
BufferSize após descartar o instantâneo
BufferSizeInMB
824.179687 --after
A segunda pergunta é por que a "taxa de acertos do cache do buffer" não mudou após a conclusão do DBCC CheckDB?
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:
... Ele ( tamanho do dado do buffer pool ) caiu de 140 GB de memória do banco de dados em cache para 60 GB. e depois disso, suba lentamente de novo durante a semana ...