在虚拟环境中使用 DB2 链接服务器进行慢速 SQL Server 查询

sta*_*lee 5 performance sql-server db2 linked-server virtualisation query-performance

我有一个使用链接服务器的慢查询问题。让我先列出我的环境,然后我会解决这个问题:

  • 虚拟 Windows 2003 R2 服务器(XenServer 6.1 和 ESXi 5 上的全新部署)
  • SQL Server 2005 SP3
  • 使用 IBM DB2 for iBMASQL OLE DB Provider 创建的链接服务器 在此处输入图片说明
  • 查询本身是一个带有 where 子句的 select 语句,用于选择本月的交易。 在此处输入图片说明

好的,所以问题本身:

  • 虚拟机设置为 4 个 vCore,大约需要 35 秒才能完成
  • 虚拟机设置为 2 个 vCore,大约需要 20 秒才能完成
  • 虚拟机设置为 1 个 vCores,大约需要 5 秒才能完成

我试过修补:

  • 网卡设置
  • MAXDOP 1 选项
  • 查看执行计划

我不知道从这里开始该怎么做。我们希望使用 4 个 vCore,因为服务器将被大量使用。但是,与仅使用 1 个 vCore 相比,查询需要更长的时间。

是否有任何可能的方法来限制链接服务器使用的 vCore 数量?

还有什么我应该看的吗?

谢谢!

sta*_*lee 4

感谢 Jon Seigel,问题似乎部分是由于 SQL 中的 CPU 亲和性设置造成的。

我们使用来自映像的 SQL 部署了此虚拟机,这会导致此处列出的已知问题(场景 #3):

删除自动关联选项并设置关联掩码选项以使用所有可用的 CPU 解决了该问题。

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'affinity mask', 15;
RECONFIGURE;
GO
sp_configure 'show advanced options', 0;
RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)

SQL Server 亲和力 GUI

我们已经更新了图像以包含此选项。感谢大家在这个问题上的帮助。


请注意,此选项在 SQL Server 2012 中已弃用,不建议使用。此外,它还与 Windows 2000 和 Windows 2003 操作系统中的处理器线程处理有关。