加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 哪一个更有效:从链接服务器中选择还是插入链接服

发布时间:2020-12-31 12:03:13 所属栏目:MsSql教程 来源:网络整理
导读:假设我必须将数据从一个服务器导出到另一个服务器(通过链接服务器).哪种陈述会更有效率? 在源服务器中执行: INSERT INTO [DestinationLinkedServer].[DestinationDB].[dbo].[Table]SELECT a,b,c,... FROM [dbo].Udf_GetExportData() 或者在目标服务器中

假设我必须将数据从一个服务器导出到另一个服务器(通过链接服务器).哪种陈述会更有效率?

在源服务器中执行:

INSERT INTO [DestinationLinkedServer].[DestinationDB].[dbo].[Table]
SELECT a,b,c,... FROM [dbo].Udf_GetExportData()

或者在目标服务器中执行:

INSERT INTO [dbo].[Table]
SELECT a,...
FROM OPENQUERY([OriginLinkedServer],'SELECT a,... FROM [OriginDB].[dbo].Udf_GetExportData()')

哪一个更快,消耗的资源总量更少(源服务器和目标服务器)?两台服务器都是SQL Server 2005.

解决方法

Suppose I have to export data from one server to another.

最好是使用

>如果您希望所有数据都使用备份/恢复; BCP OUT& BCP IN或SSIS
>如果您想要数据子集(仅限某些表),请使用SSIS或BCP OUT& BCP IN

要移动数据,取决于数据的数量/大小和n / w带宽,链接服务器将终止性能.

Executing in source server Or executing in target server – Which one will be faster and consume fewer resourcers in total (both source and target server)?

– 在源服务器中执行:

INSERT INTO [DestinationLinkedServer].[DestinationDB].[dbo].[Table]
SELECT a,... FROM [dbo].Udf_GetExportData()

当您在源服务器上执行查询并将数据推送到目标服务器时,这称为PUSHING Data.这将是昂贵的操作.

—在目标服务器中执行

INSERT INTO [dbo].[Table]
SELECT a,... FROM [OriginDB].[dbo].Udf_GetExportData()')

当您在目标服务器上执行查询并从源服务器提取数据时,这称为PULLING Data.与前一个相比,这将更快,资源更少(取决于拉动的数据量).

对于pull方法,使用SQL事件探查器,您将看到在链接服务器(源服务器)上执行单个SQL语句,并且结果集从源服务器切换到目标服务器,这比PUSH有巨大的性能提升方法.

另一点需要注意的是:

在链接服务器(4部分命名约定使用servername.databasename.schema.tablename a.k.a分布式查询)和OPENQUERY之间,通常OPENQUERY会很快.为什么?

对于链接服务器 – 查询优化器通过查看查询命名法创建执行计划,并将其分解为远程和本地查询.本地查询在本地执行,远程查询的数据从远程服务器收集,在本地擦除,组合在一起并作为单个记录集呈现给最终用户.

对于OPENQUERY – 在指定的链接服务器上执行指定的传递查询. SQL Server将传递查询作为未解释的查询字符串发送到OLE DB数据源.因此,SQL不会对查询应用任何类型的逻辑,也不会尝试估计查询将执行的操作,它只是将指定的查询原样传递给目标链接服务器.在一个查询中不引用多个服务器时,打开查询很有用.它通常很快,因为SQL不会将其分解为多个操作,并且不会对接收的输出执行任何本地操作.

优秀的阅读参考:

> Linked servers and performance impact: Direction matters!
> Distributed Queries
> OPENQUERY

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读