我们有一个托管在七台服务器上的 BizTalk Server 组,所有服务器都托管在 VMware 中。该组包括四个 BizTalk 应用程序服务器和三个 SQL Server 实例。
根据 Microsoft 对 BizTalk 的开箱即用配置,组中的一个 SQL Server 实例有意将其 MAXDOP 设置为 1。根据 Microsoft 的说法,不得更改此设置。
我们认为在这个 SQL 实例上运行的一些查询可能是 CPU 密集型的,并且想考虑我们是否可以提升这个特定虚拟机的 CPU 资源。
我的理解是添加额外的 vCPU 内核是没有意义的:MAXDOP 设置为 1,因此任何受 CPU 约束的查询都无法使用任何额外的 CPU 内核,因为它们可能不会运行并行操作。
在这种情况下可以做任何事情吗?我的假设是虚拟机中 vCPU 的时钟速度与 VMware 主机中物理 CPU 的时钟速度相同,因此没有办法提高它。
- 我上面的所有假设都正确吗?
- 如果是这样,这是否意味着无法提高这些查询可用的 CPU?
- 我们还有什么可以做的吗?
是的,据我所知,你在所有方面都是正确的。
鉴于您所描述的限制,为这些查询“提升 CPU”的唯一方法是将 VM 移动到具有更快时钟速度的 CPU 的主机上。
您最好的选择可能是识别有问题的查询并设置计划指南以向这些特定查询添加
MAXDOP
提示。这将覆盖服务器级别设置,因此这些特定查询将并行进行,而其余查询仍将处于 DOP 1。其他一些不太理想/更可能导致问题的选项:
MAXDOP
从 1 提高 - 这当然违背了配置指南,但它是一个可用的选项来测试并查看它是否有益于这些有问题的查询而不会对其他查询造成太大伤害