为什么 SQL Server 2014 在没有存储活动数据的情况下消耗如此多的 RAM?

Gif*_*guy 7 sql-server memory sql-server-2014

我在我的笔记本电脑上运行 SQL Server 2014 以及大量其他已安装的应用程序,从 Visual Studio 到视频游戏。

这显然不是生产服务器,而是仅用于开发和调试。

我已经编写了一个相当小而简单的数据库,其中包含几十个表和视图 - 我插入了不到 100 行的虚拟数据用于测试。

有一次我不小心创建了一个 100GB+ 的索引,使用了一些格式错误的交叉连接 - 创建这个索引的查询消耗了我的笔记本电脑 (16GB) 中 100% 的内存,这使一切变得缓慢,所以我中止了查询而不是等待它完成,然后立即删除并重新创建整个数据库,并从创建脚本中删除此索引。

但是,从那时起,SQL Server 2014 一直在消耗我所有 16GB 的 RAM,即使查询中止和数据库删除也是如此。

所以我接下来重新启动了我的笔记本电脑,SQL Server 的 RAM 使用量下降到 7GB - 从那时起它一直保持不变,无论我是否删除了所有 5MB 的现有数据库等。

我想让 SQL Server 恢复到合理的内存消耗水平,但我不知道从哪里开始寻找可能的原因。

我知道这是一个非常开放的问题,但我愿意在一些指导下进行跑腿工作。

我只是不知道从哪里开始进行故障排除,因为我自己不是 DBA - 显然 Google 也不知道。:)

Ken*_*her 6

首先是使用 GUI 或sp_configure更改实例上的最大内存设置。

EXEC sp_configure 'max server memory (MB)', 1024
Run Code Online (Sandbox Code Playgroud)

然后进入 SQL Server 配置管理器并停止并重新启动实例。您实际上不必重新启动笔记本电脑。

这将修复它,以便您的实例不会使用超过 1GB 的空间。我相当确定它使用的内存不包含在此设置中,但数量不多。

SQL Server 喜欢根据需要占用内存。它不太擅长返还它,因此最好将个人笔记本电脑上的最大内存设置保持在相当低的水平,除非您碰巧需要更多内存。我将 1gb 设置用于随机小查询等,如果我需要更多,我会更新它。当然,我的笔记本电脑总共只有 6GB 的内存。

  • 这就像一个魅力。我什至根本不需要重新启动服务。我只是在 SSMS 中将最大内存更改为 512MB,然后在我的任务管理器窗口中查看内存使用量几乎立即下降到 380MB。毫无疑问,SQL Server 只是为了未来的需求等而保持手头的内存。 (2认同)