Sql server SP执行速度非常慢,并且在对象上创建锁

Sql server SP执行速度非常慢,并且在对象上创建锁,sql-server,Sql Server,sql01服务器上有一个过程,从其中一个表中提取数据并插入Sql04服务器(应用程序正在运行)。 大约有50000条记录,每次执行此操作时,该过程都会截断Sql04上的数据,并在其中插入新数据。 程序如下 DELETE [SQL04].[Phantom].[dbo].[BulkQuote] INSERT [SQL04].[Phantom].[dbo].[BulkQuote] ( COL1, ___ COL22 ) SELECT COL1, ___ COL22 FROM [dbo].[

sql01服务器上有一个过程,从其中一个表中提取数据并插入Sql04服务器(应用程序正在运行)。 大约有50000条记录,每次执行此操作时,该过程都会截断Sql04上的数据,并在其中插入新数据。 程序如下

DELETE [SQL04].[Phantom].[dbo].[BulkQuote]
INSERT [SQL04].[Phantom].[dbo].[BulkQuote]  
(
 COL1, ___ COL22
)
SELECT   
COL1, ___ COL22
FROM [dbo].[Quote]
上面的过程需要将近一个小时才能完全执行,与那里的数据相比太长了

我检查了同时在同一对象上运行并创建锁或块的其他进程,没有发现任何块 但是这个过程是在表(X和IX)上创建锁

当我使用SP_who2检查作业的SPID时,我得到了以下详细信息 spid:160 状态:睡眠 登录:mcd\srvr02 主机:Sql02 布莱克比:- 数据库名:幻影 命令:等待命令 CPU时间:11475 磁盘IO:1106 最后一批:05/16 08:13:54


请有人帮助我提供任何信息,帮助我对锁进行排序并使SP快速运行。

看起来您正在执行链接服务器查询;这可能是出了名的缓慢。然而,是
删除
还是
插入
太慢了?您可以使用
TRUNCATE
来加速
DELETE
bu;如果没有
标识
列,则无需保留编号。如果是
插入
,那么在链接服务器上执行该操作可能会遇到性能问题,但是,请同时发布表
[dbo].[Quote]
索引的
DDL
。使用链接服务器进行ETL过程总是会出现性能问题。你最好换成SSIS。