Tworzę aplikację, w której planuję osadzić SQL Server 2012 Express jako podstawowy magazyn danych. Podczas testowania na moim komputerze programistycznym (Win7-32 z 3 GB pamięci RAM) nigdy nie zauważyłem sqlservr.exe
, aby proces zużywał więcej niż 1 GB pamięci RAM, jak można się spodziewać po opublikowanych limitach skalowania sprzętowego dla wersji Express programu SQL Server.
Następnie przeniosłem moją aplikację na maszynę klasy serwerowej (Win Server 2008R2 64-bit z 16 GB pamięci RAM), aby ocenić jej wydajność. Zaskoczyło mnie, że sqlservr.exe
proces szybko rozszerzył się do około 9,5 GB pamięci RAM i pozostał tam.
Ponownie uruchomiłem go kilka razy, aby zobaczyć, czy to przyniesie jakiś efekt, ale za każdym razem proces szybko wracał do ~ 9,5 GB. Teraz z pewnością cieszę się, że SQL Server Express korzysta z mojej pamięci RAM, ale chciałbym wiedzieć, czy jest to oczekiwane zachowanie, aby nie polegać na poziomach wydajności opartych na niewłaściwym użyciu pamięci RAM.
FYI, zgodnie z wersją SQL Server na moim serwerze SELECT @@VERSION
, jest:
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)
Mój numer 9,5 GB pochodzi z numeru „Prywatny zestaw roboczy” w Menedżerze zadań. Pierwsza tabela danych wyjściowych DBCC memorystatus
(choć na bezczynnym serwerze) znajduje się poniżej:
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
Dane wyjściowe z sugerowanego zapytania spaghettidba w sprawie sys.dm_os_memory_clerks
:
MEMORYCLERK_SQLBUFFERPOOL 1410
OBJECTSTORE_LOCK_MANAGER 256
MEMORYCLERK_SQLCLR 38
MEMORYCLERK_SOSNODE 26
CACHESTORE_SQLCP 11
plus ~ 10 więcej mniejszych wpisów, których suma jest mniejsza niż 30 MB.
MEMORYCLERK_SQLBUFFERPOOL 1410 OBJECTSTORE_LOCK_MANAGER 256 MEMORYCLERK_SQLCLR 38 MEMORYCLERK_SOSNODE 26 CACHESTORE_SQLCP 11
a następnie kilka innych małych, których suma wynosi <30 MB. Wydaje mi się to dziwne. -arg- przy formatowaniu komentarza.