我正在构建一个应用程序,我计划在其中嵌入sql Server 2012 Express作为主数据存储区.在我的开发机器(带有3GB RAM的Win7-32)上进行测试时,我从未发现sqlservr.exe进程使用超过1GB的RAM,正如我期望从sql Server的Express版本发布的
hardware scaling limits那样.
然后我将我的应用程序移动到服务器级机器(Win Server 2008R2 64位,16GB RAM)以评估其在那里的性能,并惊讶地发现sqlservr.exe进程迅速扩展到大约9.5GB的RAM并保持在那里.
我重新启动它几次,看看是否会产生任何影响,但每次,过程迅速恢复到~9.5GB.现在我很高兴让sql Server Express使用我的RAM,但我想知道这是否是预期的行为,以便我不依赖于基于RAM使用不正确的性能水平.
仅供参考,根据SELECT @@ VERSION,我服务器机器上的sql Server版本是:
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)
我的9.5GB号码来自任务管理器中的“私人工作集”号码. DBCC memorystatus的第一个输出表(尽管在现在空闲的服务器上)如下:
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
spaghettidba在sys.dm_os_memory_clerks上建议查询的输出:
MEMORYCLERK_sqlBUFFERPOOL 1410 OBJECTSTORE_LOCK_MANAGER 256 MEMORYCLERK_sqlCLR 38 MEMORYCLERK_SOSNODE 26 CACHESTORE_sqlCP 11
加上大约10个较小的条目,总和小于30MB.