none
查询链接数据库太慢,为什么? RRS feed

  • 问题

  • 在10.100.0.4上查询链接数据库的数据,通过
    select top 10 * from [10.100.0.2].DB1.dbo.GOODS
    查询用了35秒

    通过
    SELECT * FROM OPENQUERY([10.100.0.2],'SELECT top 10 * FROM DB1.dbo.GOODS')
    查询用了10秒。

    都是很慢。

    但是其他服务器从10.100.0.2上查询就很快,几乎是0秒。
    而从10.100.0.2上查询10.100.0.4的数据就非常快,0秒。

    也就是说,A->B慢。B->A快。C.D.E..->B快。


    lixw

    2012年12月14日 9:28

答案

全部回复

  • 对于链接服务器的查询, 查询优化器很难优化, 因为它无法像本地服务器那样能够得到优化所需要的足够信息

    所以第一种写法, 有可能会是所有数据拉过来之后再去 TOP 10, 你可以Trace 链接服务器上的操作来知晓这个数据是如何查询的

    至于都很慢的问题, 不知道你直接在0.4 上, 通过客户端连接上0.2 做查询, 看看效率如何, 有可能是网络传输比较慢

    2012年12月14日 9:55
  • 网络传输不存在问题。都是在一个局域网里。

    现在0.4服务器是server08 R2 x64系统,架设了IIS,发布了网站。

    0.2是server03 x64系统。

    看到有人说过pull的效率高,push 的效率低,不过就提取个数据而已,也不知道怎么写SQL才算pull啊。


    lixw

    2012年12月15日 1:28
  • Did yoy try connect to 0.2 server in ssms on 0.4 server and query 0.2 server directly? Is it faster than through linked server?
    2012年12月15日 2:59
  • 谢谢回复!

    试过了,在0.4服务器上注册0.2数据库,查询速度非常快。

    只有在使用连接数据库查询的时候非常慢,链接数据库是用sa账号注册的。


    lixw

    2012年12月15日 8:51
  • How did you create linked server on 0.4 server? Have same sql version and sp level on all servers?
    2012年12月15日 17:53
  • A->B慢。C.D.E..->B快。

    这个A 和C.D.E的主要区别是哪里?

    2012年12月16日 8:16
    版主
  • 有没有查看在不同服务区执行两条语句的等待状况?等待资源有什么不同?
    2012年12月16日 12:35
  • 谢谢各位!

    创建链接服务器就是使用的鼠标右键->创建链接数据库,输入sqlserver的ip地址,使用sa账号。

    两台服务器的唯一不同就是0.4是08server x64 R2,0.2是03server x64。

    sqlserver都是05 sp4的。

    0.4这台服务器不是我负责的,当初安装的时候告诉过他们,装完后一定先打补丁,再用。

    刚才看了下,他们从来没打过补丁,现在正在打补丁。等打完补丁再看。

    • 已编辑 softking 2012年12月17日 0:56
    2012年12月17日 0:30
  • 您好,KevinLiu2,您说的“查看在不同服务区执行语句”,怎么看?

    我也想看看在不同SQLServer上语句的执行情况,但是Profiler只监控到了在0.4上执行的语句,我想是不是应该有更好的办法去监控?

    谢谢!


    lixw

    2012年12月17日 0:58
  • 可以使用sys.dm_exec_requests查看等待信息等待资源。
    2012年12月17日 5:10
  • 楼主 可解决了问题?

    昨天我碰到这一样的问题

    两台服务器1.94(Windows Server 2003 Sql Server 2005)跟1.148(Windows Server 2008R2 Sql Server 2005) 之间建立链接服务器,通过链接服务器在94上查询148的非常块,但是从148查询94的就非常慢

    但是另外一台服务器1.149(Windows Server 2003 Sql Server 2005)访问148却很快

    不知道是什么原因

    2012年12月20日 2:39
  • I'll set netmon to check network traffic between machines.
    2012年12月20日 3:17
  • 没解决,实在看不出来是哪里的问题。

    准备采取下面的方法:

    1、重装SQLServer,如果还是不行,用第二条。

    2、重装08Server,装sp1,不装R2.


    lixw

    2012年12月21日 0:20
  • net work monitor + sql profile 跟踪一下整个过程, 看看到底慢在那个部分
    2012年12月21日 1:16