我们在Server 2016上有一个1.5tb集群列存储表(900个分区)。
我们在2012年的一个盒子上创建了一个链接服务器,指向这个服务器。
执行一个简单的“从servera.databasea.dbo.tablea中选择字段,字段b,字段c”,其中partition_field =b和otherfield =c需要63秒。
我对两者都有sysadmin,所以我有权进行统计,但是当我运行一个查询时,sp_whoisactive会显示它在运行dbcc show_statistics(@qtbl, @statname) with stat_header join density_vector
(据我们所见)60秒,然后更改为执行一个查询,此时它将在3秒内完成。
因此,每个链接服务器查询至少需要60秒。我尝试使用"SQL Server“和Microsoft提供程序来构建链接服务器,两者都是这样做的。有什么办法纠正这种行为吗?是的,我们将在未来几个月内离开2012年,但在此之前我们有一些迫切的数据需要。我们的退路是复制我们需要的数据范围,但这可能会变得很糟糕。
链接服务器(相对于openquery)的原因是尽量减少我们需要进行的代码更改--如果我们只需将视图指向该表,那么就不需要更改其他代码。
排序规则兼容设置为true,数据访问设置为true,RPC和RPC Out设置为true。
谢谢。
发布于 2022-04-27 22:28:07
您可以简单地将OPENQUERY版本放在视图中。
CREATE VIEW dbo.whatever AS
SELECT cols FROM OPENQUERY(...);
OPENQUERY()
本质上是在做如果你:
使用servername.databasename.sys.sp_executesql @sql
在链接服务器
在这些情况下(我知道这些选项对您来说是不可行的),我不认为您会看到DBCC命令正在运行。
https://stackoverflow.com/questions/72031135
复制相似问题