当运行多个 SQL Server 实例时,应如何管理内存?

解决方案 »

  1.   

        (1)使用 max server memory 控制内存使用量。为每个实例建立最大设置,注意总的允许设置值不能大于计算机上的物理总内存。可能需要为每个实例提供与预期的工作负荷或数据库大小成正比的内存。这种方法的优势体现在:当启动新的进程或实例时,可以立即为这些进程或实例提供可用内存。这种方法的缺点为:如果没有运行所有实例,则所有运行中的实例都无法使用剩余的可用内存。    (2)使用 min server memory 控制内存使用量。为每个实例建立最小设置,以使这些最小值的和比计算机上总的物理内存小 1-2 GB。此外,可能需要建立与该实例的预期负荷成正比的最小值。这种方法的优势体现在:如果没有同时运行所有实例,则运行中的实例可以使用剩余的可用内存。当计算机上存在其他占用大量内存的进程时,这种方法也十分有用,因为它可确保 SQL Server 至少获取合理的内存量。这种方法的缺点为:当启动新的进程(或任何其他进程)时,它可能会花费一些时间运行实例以释放内存,如果实例必须将修改后的页写回到数据库中来释放内存,则花费的时间可能会更长。还可能需要显著增大分页文件的大小。    (3)不执行任何操作(不推荐)。带有工作负荷的第一个实例通常分配所有的内存。稍后启动的空闲实例最终可能会只使用最少的可用内存量运行。SQL Server 2005 不会尝试均衡分配各个实例的内存使用量。但是,所有实例都将响应 Windows 内存通知信号以调整其缓冲池的大小。自 Windows 2003 Server SP1 开始,Windows 便不再使用内存通知 API 来均衡分配各个应用程序的内存。它只提供有关系统内存可用性的全局反馈。    可以在不重新启动实例的情况下更改这些设置,以便可以轻松地进行尝试以找到适用于您使用模式的最佳设置。
      

  2.   

    楼上正解,(1)使用 max server memory 控制内存使用量。为每个实例建立最大设置;
    (2)使用 min server memory 控制内存使用量。为每个实例建立最小设置。具体还得看你服务器的配置规格。