4

我有一个 sql srever 2008 实例,一个开发服务器。所有开发人员同时在不同数据库的服务器上工作。RAM 的内存使用量超过 2GB,服务器的总 RAM 为 4GB。sys.sysprocesses 列表中没有被阻止的进程。总和(memusage)只有 190,当前连接的总进程,即计数(*)是 111,来自 sys.sysprocesses。我已经配置了一个 powershell 脚本,它会在进程 sql server 的使用量超过 2000 MB 时发出警报。我不断警觉。我没有找到任何解决方案,即在这种情况下该怎么做。

我对 sum(memusage) =190 和 RAM 使用量 2000+MB 感到困惑。其余进程在哪里消耗 RAM。

请帮帮我。

谢谢

尼特什·库马尔

4

1 回答 1

3

检查Server Properties窗口的Memory窗格(在Server Management Studio中,右键单击Object Explorer中的数据库服务器图标并选择Properties)Maximum server memory 的值。我们发现分配比机器中的总内存略少的方法效果很好。

略小于总内存,因为我们不希望操作系统强制进入虚拟内存。

SQL Server 将根据需要占用尽可能多的内存,直至达到此限制。将此限制为物理内存量会强制 SQL Server 优化查询以使用 tempdb 而不是使用虚拟内存。我们发现这更好。

如果 SQL Server 没有使用所有内存,那么它可能根本不需要它。这是我们对一些服务器的经验。瓶颈可能在其他地方——可能是磁盘 IO——所以接下来的步骤是开始了解正在运行的查询以及为什么运行缓慢......

于 2012-06-08T11:45:32.653 回答