Je crée une application dans laquelle j'ai l'intention d'incorporer SQL Server 2012 Express en tant que banque de données principale. Lors des tests sur ma machine de développement (Win7-32 avec 3 Go de RAM), je n'ai jamais observé que le sqlservr.exe
processus utilise plus de 1 Go de RAM comme je m'y attendais des limites de mise à l'échelle matérielle publiées pour l'édition Express de SQL Server.
J'ai ensuite déplacé mon application vers une machine de niveau serveur (Win Server 2008R2 64 bits avec 16 Go de RAM) pour évaluer ses performances et sqlservr.exe
j'ai été surpris de constater que le processus s'est rapidement étendu à environ 9,5 Go de RAM et y est resté.
Je l'ai redémarré plusieurs fois pour voir si cela aurait un effet, mais à chaque fois, le processus est rapidement revenu à ~ 9,5 Go. Maintenant, je suis certainement heureux que SQL Server Express utilise ma RAM, mais je voudrais savoir si c'est un comportement attendu afin de ne pas compter sur des niveaux de performances basés sur une utilisation incorrecte de la RAM.
Pour info, la version de SQL Server sur ma machine serveur, selon SELECT @@VERSION
, est:
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
Mon numéro de 9,5 Go provenait du numéro «Private Working Set» dans le Gestionnaire des tâches. Le premier tableau de sortie de DBCC memorystatus
(quoique sur un serveur maintenant inactif) est ci-dessous:
PROCESS/SYSTEM COUNTS
Available Physical Memory 5543616512
Available Virtual Memory 8734902411264
Available Paging File 22471094272
Working Set 9664200704
Percent of Committed Memory in WS 99
Page Faults 2627510
System physical memory high 1
System physical memory low 0
Process physical memory low 0
Process virtual memory low 0
Sortie de la requête suggérée de spaghettidba sur sys.dm_os_memory_clerks
:
MEMORYCLERK_SQLBUFFERPOOL 1410
OBJECTSTORE_LOCK_MANAGER 256
MEMORYCLERK_SQLCLR 38
MEMORYCLERK_SOSNODE 26
CACHESTORE_SQLCP 11
plus ~ 10 entrées plus petites qui totalisent moins de 30 Mo.
MEMORYCLERK_SQLBUFFERPOOL 1410 OBJECTSTORE_LOCK_MANAGER 256 MEMORYCLERK_SQLCLR 38 MEMORYCLERK_SOSNODE 26 CACHESTORE_SQLCP 11
Et puis quelques autres plus petites qui totalisent <30 Mo. Cela me semble étrange. -arg- au formatage du commentaire.