Nous avons surveillé certains métriques de SQLServer: Memory Manager
Et ont remarqué qu'après le travail DBCC CheckDB
Database Cache Memory (KB)
tombe de manière significative. Si pour être exact, il est tombé de la mémoire DB mise en cache de 140 Go à 60 Go. Et après cela, descendez lentement pendant la semaine. (Montant de "Free Memory KB
", Est passé de 20 à 100 Go juste après CheckDB
)
DBCC CheckDB
Est exécuté tous les dimanches, la mémoire de cache de base de données doit donc ramasser à nouveau chaque semaine
What is the behavior of this ? Why CheckDB pushes database pages out of memory ?
Deuxième question est pourquoi "buffer cache hit ratio
" N'a pas changé après DBCC CheckDB
Complète?
Il était 99,99% en moyenne et après DBCC CheckDB
Job ~ ~ 98.00% et retourne à 99% assez vite tandis que je m'attendais à supprimer "buffer cache hit ratio
" Pour supprimer de manière significative, car les données de base de données doivent être Lire du stockage à RAM= à nouveau?
Nous surveillons certains SQLSERVER: les métriques de Memory Manager et ont remarqué qu'après le travail de DBCC CheckDB, métrique
La mémoire de cache de base de données (KB) tombe considérablement. Si être exact, il est tombé de la mémoire DB mises en cache de 140 Go à 60 Go.
Ceci est correct, vous pouvez clairement voir ce comportement lorsque cet exemple DBCC CHECKDB
la commande se termine à 21h45
pourquoi
Ce comportement est dû au database snapshot
Créé par la commande DBCC
étant supprimée, en supprimant tous ses objets en mémoire.
Vous pouvez reproduire le comportement en créant un instantané d'une base de données, chargement de certaines données en mémoire, puis supprimant cet instantané
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;
Tampersize avant de laisser tomber l'instantané
BufferSizeInMB
1061.70312 --before
Drapper l'instantané
USE master
GO
DROP DATABASE MY_DATABASE_SNAPSHOT ;
Tampersize après avoir laissé tomber l'instantané
BufferSizeInMB
824.179687 --after
Deuxième question est la raison pour laquelle "le taux de frappe de cache tampon" n'a pas changé après la fin de DBCC CheckDB?
Cela dépend de la rapidité avec laquelle les données sont chargées dans votre cache tampon.
Si votre piscine tampon se remplit sur une plus longue période, cela devrait atteindre ce ratio rester plus élevé en moyenne.
Cela correspond à cette partie de votre question:
... IT ( Datasize de la piscine tampon) est tombé de la mémoire DB cache de 140 Go à 60 Go. Et après cela, lentement augmente à nouveau pendant la semaine ...