我正在构建一个计划将SQL Server 2012 Express嵌入为主要数据存储的应用程序。在我的开发机(带有3GB RAM的Win7-32)上进行测试时,我从未观察到该sqlservr.exe
进程使用超过1GB的RAM,正如我从发布的SQL Server Express版的硬件扩展限制中所期望的那样。
然后,我将应用程序移动到服务器级计算机(具有16GB RAM的Win Server 2008R2 64位)上以评估其性能,并惊讶地发现该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。
MEMORYCLERK_SQLBUFFERPOOL 1410 OBJECTSTORE_LOCK_MANAGER 256 MEMORYCLERK_SQLCLR 38 MEMORYCLERK_SOSNODE 26 CACHESTORE_SQLCP 11
然后再有几个小文件,总和小于30MB。对我来说似乎很奇怪。-arg-为注释格式。