首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在链接服务器查询中性能缓慢

问在链接服务器查询中性能缓慢
EN

Stack Overflow用户
提问于 2013-09-10 12:03:00
回答 1查看 3.5K关注 0票数 2

我正在使用从MSSQL到mySql的链接服务器查询。要查询的MySql表有800 K以上的记录

我使用临时表从链接服务器中提取结果,并在该临时表上为SQL查询进行连接

在以下几个方面是否存在性能差异:

代码语言:javascript
复制
Declare
@MyString varchar(max),
@Address varchar(20),
@tempTable (Address, ColumnB, ColumnC)


set @MyString  = 'Select Address, ColumnB, ColumnC from schemaname.tablename where ''' + convert(varchar(30),@Address) + ''') order by ColumnB desc limit 10'

set @MyString  = 'Select * from Openquery([My_Linked_Server], ''' + REPLACE(@MyString, '''', '''''') + ''')'

insert into @tempTable
exec (@MyString) 

和

代码语言:javascript
复制
Set @MyString = 'Select Address, ColumnB, ColumnC from schemaname.tablename where ''' + convert(varchar(30),@Address) + ''') order by ColumnB desc limit 10'

exec (@MyString) at My_Linked_Server

(所有这些都是用SQL完成的)-第二种方法目前给了我一个错误:

OLE DB提供程序"MSDASQL“用于链接服务器"My_Linked_Server”返回消息"MySQLOptional功能不受支持“。无法执行操作,因为OLE DB提供程序"MSDASQL“用于链接服务器"My_Linked_Server”无法开始分布式事务。

DTC已启动

使用它的另一个问题是,我得到了结果的随机定时,1秒到1分

提前感谢!

更新:

第一种方法取得了很好的效果。剩下的唯一问题是结果的随机定时。超过80%的时间,结果是即时的。这可能是由于MySql表锁(MyISAM类型的表)造成的,因为对该表有不断的写入,以及在SQL Server查询MySQL中运行的其他作业,以获取使用信息。

这是延误的合理解释吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-10 12:47:06

调试MSDTC问题可能有点痛苦。你说它在运行,是在两台服务器上运行吗?服务器之间是否有防火墙--必须确保每台服务器都可以DTCPing另一台服务器。DTCPing是您可以下载的MS实用程序。你也可能有权限问题。

DTC的性能有时可能非常糟糕,但这通常是由于带宽和往返时间问题,或者如果事务很大的话内存消耗。据我所知,它总是比非MSDTC等价物慢--假设它们实际上是等价的。

就我个人而言,如果我可以重写查询以完全避免MSDTC,我通常会对结果感到更高兴。如果在远程服务器上插入exec proc的输出,则将始终调用MSDTC。

没有关于随机时间的真正建议,也许你可以更详细地解释。

从这篇文章添加了DTC的信息

DTCPING对远程计算机进行匿名RPC调用

从xp,sp2,默认情况下,远程机器不接受匿名调用,因此它给您拒绝访问错误消息(OX5错误代码)。

如果禁用RestrictRemoteClients密钥,远程计算机将接受匿名调用。

clients.aspx

这只是DTCPING工具的问题,这个错误与DTC无关。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18718473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档