日期:2014-05-17  浏览次数:20802 次

使用链接服务器查询速度很慢,服务器出了什么问题吗?
本帖最后由 cucou 于 2013-05-20 16:52:43 编辑
我在服务器上使用链接服务器做查询,结果发现一条结果2000多的sql需要20多秒
select a.ID,c.xm as 姓名,count(a.ID) as 次数,b.nl as 年龄,
case c.xb when 1 then '男' else '女' end as 性别 
from REPORT as a left join tj.BS_tjxt.DBO.TJ_TJDJB as b on a.ID=b.TJBH 
left join tj.BS_tjxt.DBO.TJ_TJDAB as c on b.DABH=c.DABH 
where a.TYPE='11'  and a.REPORT_STATE='206' group by ID,c.xm,b.nl,c.xb


开始我以为是sql语句的问题,但是我后来在本机还原了一个备份测试,(本机是xp,服务器windows server 2008 R2,sql都是sqlserver2008 R2),同样的方式建立链接服务器,但是执行一样的sql只要4秒,
exec   sp_addlinkedserver     'tj','','SQLOLEDB','10.90.90.253'   
exec   sp_addlinkedsrvlogin   'tj','false',null,'sa','123'   
go
问题出在什么地方?
SQL 服务器 链接服务器

------解决方案--------------------
链接服务器本身就比在本地的要慢,另外有可能你的帐号没有足够的权限获取远程服务器上的statistics,在运行之前在远程服务器上用profiler开启exception事件,看看能不能捕捉到。
------解决方案--------------------
引用:
我的表述不清,是这样的,有服务器A放着一个bsrun数据库,并且建立链接,链接到服务器B中的一个叫tj的数据库,这些服务器都是放在一起的,我本机也就在机房里,所以不存在传输的问题。现在我在A上执行sql,很慢。而我自己装xp的电脑上有先前还原的一个bsrun,所以我在自己的电脑上建立连接指向服务器B的tj,再次执行sql很快,就这样。。。


1、查看执行计划
2、确认相关表没有占用(排他锁等)
3、监控io性能。并发较大的情况,io会有比较大变化
------解决方案--------------------
按7楼说的去监视数据库性能和T-SQL语句执行效率。
估计是哪个地方锁住了。
------解决方案--------------------
引用:
感谢各位,现在我在服务器B上链接服务器A,发现速度也是ok的,无语了..感觉就是服务器A除了什么问题吧

每次执行都有可能性能不同,因为查询的表有可能是在做一些DML操作导致Blocking