sql-server – 为什么SQL Server 2012 Express在我的服务器上使用9.5GB的RAM?

前端之家收集整理的这篇文章主要介绍了sql-server – 为什么SQL Server 2012 Express在我的服务器上使用9.5GB的RAM?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在构建一个应用程序,我计划在其中嵌入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.

解决方法

缓冲池的sql Express限制为1GB,但sql Server中还有许多其他内存池.我发现令人惊讶的是过度使用非缓冲内存池.
要找出每个内存职员的内存使用情况,请运行以下命令:
SELECT type,SUM(pages_kb)/1024 AS MemoryMB
FROM sys.dm_os_memory_clerks
GROUP BY type
ORDER BY 2 DESC

希望这可以帮助

猜你在找的MsSQL相关文章