Sql server SP执行速度非常慢,并且在对象上创建锁
sql01服务器上有一个过程,从其中一个表中提取数据并插入Sql04服务器(应用程序正在运行)。 大约有50000条记录,每次执行此操作时,该过程都会截断Sql04上的数据,并在其中插入新数据。 程序如下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].[
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。