sql-server – 如何判断为什么某个表上的插入很慢?

前端之家收集整理的这篇文章主要介绍了sql-server – 如何判断为什么某个表上的插入很慢?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道sql表上的INSERT可能因任何原因而变慢:

>表上存在INSERT TRIGGER
>许多必须检查的强制约束(通常是外键)
>在表的中间插入行时,页面在聚簇索引中拆分
>更新所有相关的非聚集索引
>阻止桌面上的其他活动
> IO写入响应时间不佳
> ……我错过了什么?

我怎么知道在我的具体情况中哪个是负责任的?如何衡量页面拆分与非聚集索引更新对其他所有内容的影响?

我有一个存储过程,一次插入大约10,000行(来自临时表),每10k行大约需要90秒.这是令人无法接受的缓慢,因为它导致其他spid超时.

我查看了执行计划,我看到了INSERT CLUSTERED INDEX任务以及FK查找中的所有INDEX SEEKS,但它仍然没有告诉我为什么它需要这么长时间.没有触发器,但表中确实有一些FKeys(看起来是正确索引的).

这是一个sql 2000数据库.

解决方法

你可以看一些东西……

将批量大小从10000减小到更小,如2000或1000(您没有说明行大小有多大).

尝试启用IO Stats以查看FK查找正在进行多少IO.

什么是插入时发生的等待(master.dbo.sysprocesses)?

让我们从这里开始,看看我们去哪里.

猜你在找的MsSQL相关文章