链接服务器查询速度慢,统计需要很长时间return

Linked server query slow, statistics taking a long time to return

我们在 SQL Server 2016 上有一个 1.5tb 的集群列存储 table,900 个分区。

我们在一个2012盒子上创建了一个链接服务器,指向这个服务器。

做一个简单的“select fielda, fieldb, fieldc from servera.databasea.dbo.tablea where partition_field = b and otherfield = c”需要 63 秒。

我在两者上都有系统管理员,所以我有权获得统计信息,但是当我 运行 查询 sp_whoisactive 显示它 运行ning dbcc show_statistics(@qtbl, @statname) with stat_header join density_vector 用于(如据我们所见)恰好 60 秒后它变为执行查询,此时它在 3 秒内完成。

因此每个链接服务器查询至少需要 60 秒。我已经尝试使用“SQL Server”和 SQL Server 的 Microsoft OLE Provider 构建链接服务器,两者都做同样的事情。有什么办法可以解决此问题?是的,我们将在接下来的几个月内离开 2012 年,但在此之前我们有一些紧迫的数据需求。我们的后备方案是复制我们需要的数据范围,但这可能会变得很丑陋。

链接服务器(与 openquery 相对)的原因是为了最大限度地减少我们需要进行的代码更改量 - 如果我们可以只指向一个视图 table,那么就不需要其他代码了待更改。

排序规则兼容设置为真,数据访问设置为真,RPC 和 RPC 输出设置为真。

谢谢。

您可以简单地将 OPENQUERY 版本放入视图中。

CREATE VIEW dbo.whatever AS
  SELECT cols FROM OPENQUERY(...);

OPENQUERY() 本质上是在做你会做的事情,如果你:

  • 运行 链接服务器上的本地查询
  • 用过servername.databasename.sys.sp_executesql @sql

在那些情况下(我知道这对您来说不是可行的选择)我认为您根本不会看到 DBCC 命令 运行。