我正在构建一个应用程序,我计划在其中嵌入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上建议查询的输出:
加上大约10个较小的条目,总和小于30MB.