我正在构建一个应用程序,我计划在其中嵌入 SQL Server 2012 Express 作为主数据存储。在我的开发机器(具有 3GB RAM 的 Win7-32)上进行测试时,我从未观察sqlservr.exe到使用超过 1GB RAM的过程,正如我对已发布的 SQL Server Express 版硬件扩展限制所期望的那样。
然后我将我的应用程序移到一台服务器级机器(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)
Run Code Online (Sandbox Code Playgroud)
我的 9.5GB 号码来自任务管理器中的“私人工作集”号码。来自 …
我一直在测试 SQL Server 2008R2 Express,看看它是否被限制为 1GB 的 RAM 和 1 个 CPU。
它肯定似乎使用了多个 CPU,因为当我运行一个大查询时,我在任务管理器中看到所有 4 个 CPU 上都有峰值。我从我拥有的数据库中的所有表中选择了 *,并在查看 perfmon 中的服务器总内存时使用 1.4GB RAM(我认为这是要查看的正确统计数据)。这在任务管理器上显示为 1.5GB 内存使用(我认为这是不可靠的)。
但是,它似乎不想超过 1,441,792KB。这看起来很奇怪,所以我不相信任何一种方式。
任何人都知道为什么会发生这种情况以及是否实际执行了限制?