我们正在将几个主要的 LoB SQL Server 迁移到 VM 集群,我想知道如何最好地配置新的 SQL Server 和 SQL Server 实例以获得最佳性能和利用率。我的一个想法是将主 OLTP 数据库放在一个实例中,例如,可以访问所有 16 GB 的 RAM,而将另一个实例放在同一台服务器上,也拥有所有 16 GB 的 RAM。第二个实例将包含一个用于夜间处理的数据库,该数据库需要尽可能多的内存,而第一个 DB/实例不需要这些内存,因为数据是在其中提取和操作的。无论如何,在完成夜间处理后,可以释放用于实例/数据库 2 的整个内存块用于实例/数据库 1。现在我不是问它是否会奇迹般地释放实例 2 使用的 100% 的内存,而是问 Windows 是否会对实例施加内存压力并根据需要/使用平衡使用量并分配给每个实例?
如果重要的话,它们将是 Windows Server 2008 R2 上的 SQL Server 2008 R2 实例,同样为了举例,VM 可用的系统 RAM 总量为 16 GB。
提前感谢所有的意见。
答案1
当 Windows 通知发生内存压力时两个都实例将开始修剪,直到内存压力解除(Windows 不再发出信号)。通常,让 SQL 实例竞争相同的内存是行不通的。CPU 也是如此,两个实例将竞争相同的 CPU 周期,但都不会令人满意。
一个更好的想法是将 OLTP 和夜间处理实例托管在单个实例中,在这种情况下,SQL Server 可以更好地平衡资源。您甚至可以让 SQL 使用以下方式平衡两个工作负载之间的资源资源调控器。
唯一需要单独实例的情况是需要隔离实例的非常强大的安全威慑(即 OLTP 管理员不能是夜间进程的管理员)。在这种情况下,我建议使用两个单独的 VM,而不是在单个 VM 上使用两个实例。